如何解决如何将充满工件的目录上传到GitHub软件包?
执行摘要: 如果可能的话,我想将一个充满文件的目录上传到“ GitHub软件包”中。不是GitHub的“存储库”,而是here中描述的“ Github软件包”。不幸的是,文档没有告诉您如何执行此操作。它仅告诉您如何使用JavaScript,Ruby,Java和.NET的构建工具上传构建工件。
我为什么要这样做?我在下面立即回答。尽管如果还有使用Maven的简单解决方案,那么Maven也将为我工作:
我们希望从本地托管的Nexus工件存储库迁移到GitHub软件包,以使我们的构建工件(例如jar文件)可供我们开发团队中的所有人使用。
我们使用的编程语言是Scala,这是一种以JVM为目标的语言,因此它被设计为与Java生态系统在很大程度上进行互操作。但是,对于管理版本,我们使用sbt而不是Maven。 Sbt是标准的Scala构建工具。
有一个用于sbt的插件(称为sbt-github-packages),实际上非常有用。它使我们只需键入“ sbt publish”即可轻松地将Scala jar文件等发布到GitHub。
但是,我们尚未解决的问题是将第三方工件(例如Oracle的jdbc驱动程序)上载到GitHub软件包。对于大多数第三方工件而言,这不是问题,因为它们大多数都存储在公共可用的Maven或Ivy工件存储库中,并且sbt会根据需要自动获取它们。
不幸的是,Oracle没有以这种标准方式提供其jdbc驱动程序。还有其他一些我们不需要使用的工件,这些工件不在公共工件存储库中。当前,我们通过将它们上传到我们本地托管的Nexus工件存储库中来解决此问题。
GitHub上有关将工件发布到GitHub程序包的说明只说cd到您的Java源代码Git repo中,然后键入“ mvn deploy”。 (您必须先将一些配置材料添加到pom文件中,但这很容易。)但是这些说明旨在用于编译Java源代码,然后将已编译的工件发布到GitHub包中。它们不是完整的说明,它们告诉您如何处理没有源代码的情况,而只有预先构建的工件。
我敢肯定,如果我对Maven的理解很好,我可能会想出如何进行这项工作的方法,但是我对Maven的了解非常少。如上所述,我们改为使用sbt。
我确实有一些需要工作的地方,但这并不完全正确。我创建了一个目录,其中包含所有Oracle的ojdbc7工件。我做了一个从ojdbc7-12.1.0.2.pom到pom.xml的符号链接,然后运行了“ mvn deploy”。此 did 将ojdbc7-12.1.0.2.jar和ojdbc7-12.1.0.2.pom上传到了GitHub软件包,但未上传其他工件。例如,它没有上传ojdbc7-12.1.0.2-javadoc.jar。
此外,如果此目录中有一个源代码jar,我确定它也不会被上传。
如果有人知道我需要执行什么操作才能将ojdbc7目录中的所有工件发布到GitHub软件包,我将非常感激。
解决方法
Oracle JDBC驱动程序已在Central Maven中提供。您应该使用Central Maven。 请参阅此https://developer.mozilla.org/en-US/docs/Web/CSS/right上的说明。
下面的GAV将获得JDBC驱动程序以及所有其他免费的jar。
<groupId>com.oracle.database.jdbc<groupId>
<artifactId>ojdbc8-production</artifactId>
<version>19.7.0.0</version>
,
正如Nirmala在此处的另一个答案中所提到的,对于Oracle jdbc工件,我试图做的事情可能不再是必需的。 (我还没有尝试过他的答案,看它是否对我们有用。)但是,我们可能希望将其他第三方工件放入GitHub软件包中。我已经弄清楚了如何做到这一点。这是我将ojdbb7 javadoc工件上传到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”和“ sources”等。您需要为-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
。
不幸的是,如果您没有像我上面那样指定插件版本,最终会得到一个旧版本的插件,它无法正常工作。 (至少在我撰写本文时还没有。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。