如何发布常规的非Android Java库,以便通过Maven& amp; Gradle构建脚本?

时间:2016-02-24 23:48:13

标签: java maven gradle bintray jcenter

我最近为Java编写了第三方库。目前,我正在通过Github和我拥有的网站分发库,我可以下载JAR文件。我想这样做,以便开发人员可以使用Gradle和Maven(以及可能的其他构建自动化工具)轻松地将我的第三方库包含在他们的项目中。

我是Maven,Gradle,Bintray,JCenter,MavenCentral,Ivy等的新手。但是,我确实有使用Ant,Java和Linux的经验。

我一直在努力学习如何使用上面的工具/平台发布我的第三方库,但我感到很困惑。

  • 根据我所读到的内容,Gradle,Maven和Ant是竞争技术。那么,为什么在实际的用例场景中,Gradle似乎与Maven交织在一起呢?
  • Bintray宣称自己是一个软件发布和分发平台。那么,为什么需要创建JCenter作为与Bintray其他部分截然不同的东西? JIND可以做什么,Bintray不能做到?
  • 我在Bintray上创建了一个测试包和版本,并将JAR文件上传到该版本。是否可以编写一个Gradle脚本,该脚本能够将该JAR文件作为Java项目中的依赖项包含在内?或者包是否需要与JCenter“链接”?

基本上,任何人都能告诉我上述所有技术的情况吗?不觉得有义务为这篇帖子中以问号结尾的所有句子提供答案。这些问题主要是为了证明我目前的理解水平。简单概述技术如何协同工作将是很好的,如果可能的话,还可以回答这篇文章标题中的问题。

2 个答案:

答案 0 :(得分:3)

我会尝试回答所有以问号结尾的句子:)

  

根据我的阅读,Gradle,Maven和Ant是竞争技术。那么,为什么在实际用例场景的背景下,Gradle似乎与Maven交织在一起呢?

除了作为构建工具和依赖管理器(Maven与Gradle竞争)之外,Maven还引入了标准工件描述符(POM文件),标准项目布局(src / main / java等)和标准工件布局(groupId/version/artifactId-version.ext)由于Maven的普及而成为行业中的标准事实。他们并不是特别糟糕,所以他们现在坚持不懈,Gradle也和他们一起工作。

此外,当Maven已经非常受欢迎时,Gradle出现了。为了超越这种流行的技术,Gradle必须提供一个简洁易用的迁移路径,这意味着支持Maven结构化项目,Maven结构化的本地缓存等。

  

Bintray宣传自己是一家软件出版和发行公司   平台。那么,为什么需要创建JCenter作为某种东西   与Bintray的其他人截然不同? JCenter能做什么呢?Bintray   不能?

JCenter与Bintray不是“不同的东西”。 JCenter是Bintray中的repository。这个存储库是特殊的(我们称这种类型的存储库为"Central Repository"),因为它由Bintray团队自己维护,并包含(或链接)世界上最大的Java库集合。对于很多Java(或Android那样)的开发人员,他们不打算通过Bintray发布他们的工作而不关心其他人的个人存储库,Bintray唯一感兴趣的是JCenter。因此,人们将JCenter称为它自己的东西。

  

我在Bintray上创建了一个测试包和版本,我上传了一个   JAR文件到版本。是否可以编写一个Gradle脚本   将能够将该JAR文件包含为Java中的依赖项   项目?

绝对。 “Set Me Up”按钮将打开一个窗口,您可以在其中找到有关如何在Gradle中添加个人存储库的说明。完成后,您的存储库中的工件将可在Gradle项目中解决。

  

或者包是否需要与JCenter“链接”?

将您的软件包包含在JCenter中的好处是,其他熟悉JCenter作为第三方依赖关系源但不熟悉Bintray上的存储库的开发人员将能够找到并使用您的库。

我希望它有所帮助。

我与JFrogBintray [artifactory]背后的公司,请参阅my profile了解详细信息和链接。

答案 1 :(得分:0)

要回答真的很难(几乎不可能),因为你提出了多个问题(我计算了5个问号),而且你想要解释所有提到的技术如何一起发挥(或不合作)。这确实超出了stackexchange的范围和用途。

然而,如果它是你可以忍受的maven,那么你可能想要的是:

1)将您的工件部署到maven central repo ==>见https://maven.apache.org/guides/mini/guide-central-repository-upload.html

2)部署到其他一些众所周知的公共maven回购(如sonatype)

3)托管您自己的公共maven回购(可由其他人使用)并上传到那里,仍然保留"广告"通过web和github页面