Как я могу загрузить каталог, полный артефактов, в пакеты GitHub?

#github

#github

Вопрос:

Краткое описание: я бы хотел, если возможно, просто загрузить каталог, полный файлов, в «Пакет GitHub». Не «репозиторий» GitHub, а «Пакет Github», которые описаны здесь . К сожалению, в документации не указано, как это сделать. В нем рассказывается только о том, как загружать артефакты сборки с помощью инструментов сборки для JavaScript, Ruby, Java и .NET.

Почему я хочу это сделать? Я отвечаю на это сразу ниже. Хотя, если есть простое решение с использованием Maven, то Maven также будет работать для меня:

Мы надеемся перейти из локального хранилища артефактов Nexus в пакеты GitHub, чтобы сделать артефакты сборки (например, файлы jar) доступными для всех в нашей команде разработчиков.

Язык программирования, который мы используем, — это Scala, язык, ориентированный на JVM, поэтому он разработан для взаимодействия с экосистемой Java. Однако для управления сборками мы используем sbt, а не Maven. Sbt — это стандартный инструмент сборки Scala.

Для sbt есть плагин (называемый sbt-github-packages), который на самом деле отлично работает. Это позволяет нам легко публиковать наши файлы Scala jar и т. Д. На GitHub, Просто набрав «sbt publish».

Однако проблема, которую нам еще предстоит решить, заключается в загрузке в пакет GitHub артефактов сторонних производителей, таких как драйверы Oracle jdbc. Это не проблема для большинства сторонних артефактов, поскольку большинство из них хранятся в общедоступных репозиториях артефактов Maven или Ivy, и sbt просто автоматически извлекает их по мере необходимости.

К сожалению, Oracle не предоставляет свои драйверы jdbc таким стандартным способом. Есть и другие артефакты, которые нам нужно использовать, которые мы не создаем и которые не находятся в общедоступных репозиториях артефактов. В настоящее время мы решаем эту проблему, загружая их в наш локально размещенный репозиторий артефактов Nexus.

В инструкциях на GitHub для публикации артефактов в пакетах GitHub указано, что только для cd в вашем репозитории Git с исходным кодом Java и введите «mvn deploy». (Сначала вам нужно добавить некоторые конфигурационные данные в файл pom, но это достаточно просто.) Но эти инструкции предназначены для компиляции исходного кода Java и последующей публикации скомпилированных артефактов в пакете GitHub. Это неполные инструкции, которые рассказывают вам, как действовать в случае, когда у вас нет исходного кода, а вместо этого есть только готовые артефакты.

Я уверен, что если бы я хорошо понимал Maven, я, вероятно, мог бы понять, как заставить это работать, но я очень, очень мало знаю о Maven. Как я упоминал выше, вместо этого мы используем sbt.

Я действительно заставил что-то работать, но это не совсем правильно. Я создал каталог со всеми артефактами Oracle ojdbc7. Я создал символическую ссылку из ojdbc7-12.1.0.2.pom на pom.xml а затем я запустил «развертывание mvn». Это загрузило ojdbc7-12.1.0.2.jar и ojdbc7-12.1.0.2.pom в пакет GitHub, но другие артефакты не были загружены. Например, это не загрузилось ojdbc7-12.1.0.2-javadoc.jar .

Кроме того, если бы в этом каталоге был jar с исходным кодом, я уверен, что он также не был бы загружен.

Если кто-нибудь знает, что мне нужно сделать, чтобы опубликовать в пакете GitHub все артефакты в моем каталоге ojdbc7, я буду очень благодарен.

Комментарии:

1. github.com/features/packages а затем lab.github.com/githubtraining/…

Ответ №1:

Драйверы Oracle JDBC уже доступны в центральном Maven. Вы должны использовать центральный Maven. Обратитесь к инструкциям на этой странице.

Приведенный ниже GAV получит драйвер JDBC вместе со всеми другими бесплатными jar.

 <groupId>com.oracle.database.jdbc<groupId>
<artifactId>ojdbc8-production</artifactId>
<version>19.7.0.0</version>
  

Комментарии:

1. Спасибо. Этот ответ помогает с одной конкретной проблемой, драйверами Oracle jdbc, которые являются более свежими, чем ojdbc7. Но это не помогает с более общей проблемой, которая у меня все еще есть для других артефактов, которые в настоящее время доступны только в нашем локально размещенном Nexus и которые мне нужно перенести в пакеты GitHub.

Ответ №2:

Как упоминал Нирмала в другом ответе здесь, то, что я пытаюсь сделать, может больше не понадобиться специально для артефактов Oracle jdbc. (Я не пробовал его ответ, чтобы посмотреть, работает ли он для нас.) Но есть и другие сторонние артефакты, которые мы, возможно, захотим поместить в пакет GitHub. Я понял, как это сделать. Вот пример того, как я загружаю артефакт javadoc ojdbb7 в пакет GitHub:

 $ mvn org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file 
     -DpomFile=pom.xml 
     -Dfile=ojdbc7-12.1.0.2.jar 
     -Dfiles=ojdbc7-12.1.0.2-javadoc.jar 
     -Dclassifiers=javadoc 
     -Dtypes=jar 
     -Durl=https://maven.pkg.github.com/myCompany/myRepo 
     -DrepositoryId=github
  

-Dfiles может содержать разделенный запятыми список файлов, которые вы хотите загрузить, в дополнение к артефакту объектного кода.

-Dclassifiers это разделенный запятыми список таких вещей, как «javadoc» и «источники» и т.д. Вам нужно указать один для каждого артефакта, в который вы включаете -Dfiles .

-Dtypes это разделенный запятыми список всех расширений файлов, которые вы включаете в свою загрузку. (Кроме «pom.xml «.) В этом случае мы загружаем только файлы jar (и «pom.xml «), поэтому нам нужно только указать «jar».

-Durl указывает репозиторий, в который вы хотите загрузить. Он должен начинаться с «https://maven.pkg.github.com «.

-DrepositoryId должно быть «github».

Естественно, глядя на командную строку Maven, которую я предоставил, задаваться вопросом, что случилось org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file . Можно было бы подумать, что вместо этого вы могли бы безопасно использовать более разумный вызов deploy:deploy-file .

К сожалению, если вы не укажете версию плагина, как указано выше, вы в конечном итоге получите старую версию плагина, которая не работает. (По крайней мере, не в то время, когда я пишу это.)

Комментарии:

1. У меня это не работает. Я постоянно получаю 422 Unprocessable Entity сообщение об ошибке. Независимо от того, я пытаюсь загрузить простой JAR POM или JAR POM SOURCES