5

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

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

我一直在尝试学习如何使用上面的工具/平台发布我的 3rd 方库,但我变得很困惑。

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

基本上,谁能告诉我上述所有技术发生了什么?不要觉得有义务为这篇文章中所有以问号结尾的句子提供答案。这些问题主要是为了展示我目前的理解水平。对这些技术如何协同工作的简单概述会很好,如果可能的话,可以回答本文标题中的问题。

4

2 回答 2

5

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

根据我的阅读,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 中的一个存储库。这个存储库很特别(我们称这种类型的存储库为“中央存储库”),因为它由 Bintray 团队自己维护,并包含(或链接)世界上最大的 Java 库集合。对于许多不打算通过 Bintray 发布他们的工作并且不关心其他人的个人存储库的 Java(或 Android)开发人员来说,对 Bintray 唯一感兴趣的是 JCenter。因此,人们将 JCenter 称为自成一体。

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

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

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

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

我希望它有所帮助。


我在Bintray[artifactory]​​背后的公司JFrog工作,有关详细信息和链接,请参阅我的个人资料。

于 2016-02-25T19:37:31.170 回答
-2

很难(几乎不可能)给出答案,因为您要问多个问题(我数了 5 个问号),而且您想要解释所有提到的技术如何协同工作(或不协同工作)。这确实超出了 stackexchange 的范围和用途。

但是,如果您可以使用 maven,那么您可能想要的是:

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

2)部署到其他一些知名的公共 maven 仓库(如 sonatype)

3)托管你自己的公共maven repo(可以被其他人使用)并上传到那里,仍然通过web和github页面保持“广告”

于 2016-02-25T00:12:13.337 回答