如何发布常规 non-Android Java 库,以便通过 Maven 和 Gradle 构建脚本将其包含在 Java 项目中?
How to publish a regular, non-Android Java library so that it becomes available for inclusion in Java projects via Maven & Gradle build scripts?
我最近为 Java 编写了一个第 3 方库。目前,我正在通过 Github 和我拥有的网站分发该库,我可以在该网站上下载 JAR 文件。我想这样做,以便开发人员可以使用 Gradle 和 Maven(可能还有其他构建自动化工具)轻松地将我的第 3 方库包含在他们的项目中。
我是 Maven、Gradle、Bintray、JCenter、MavenCentral、Ivy 等的新手。但是,我确实有使用 Ant、Java 和 Linux 的经验。
我一直在尝试学习如何使用上面的 tools/platforms 发布我的第 3 方库,但我变得很困惑。
- 根据我的阅读,Gradle、Maven 和 Ant 是相互竞争的技术。那么,为什么在实际 use-case 场景的上下文中,Gradle 似乎与 Maven 如此交织在一起?
- Bintray 宣传自己是一个软件发布和分发平台。那么,为什么需要将 JCenter 创建为与 Bintray 的其余部分不同的东西? JCenter 能做什么而 Bintray 不能?
- 我已经在 Bintray 上创建了一个测试包和版本,并将一个 JAR 文件上传到该版本。是否可以编写一个 Gradle 脚本,将能够将该 JAR 文件作为依赖项包含在 Java 项目中?或者包是否需要 "linked" 与 JCenter?
基本上,任何人都可以告诉我上述所有技术是怎么回事吗?不要觉得有义务回答 post 中所有以问号结尾的句子。这些问题主要是为了展示我目前的理解水平。简单概述一下这些技术如何协同工作会很棒,如果可能的话,回答这个 post.
标题中的问题
真的很难(几乎不可能)给出答案,因为你问了多个问题(我数了 5 个问号),而且你想要解释所有提到的技术如何一起(或不一起) ).这确实超出了 stackexchange 的范围和用处。
但是,如果它是您可以接受的专家,那么您可能想要的是:
1) 将您的工件部署到 Maven 中央仓库 ==> 请参阅 https://maven.apache.org/guides/mini/guide-central-repository-upload.html
2) 部署到其他一些众所周知的 public maven 仓库(如 sonatype)
3) 托管您自己的 public maven 存储库(可供其他人使用)并上传到那里,仍然通过网络和 github 页面保持 "advertising"
我会尝试回答所有以问号结尾的句子:)
Based on what I've read, Gradle, Maven, and Ant are competing technologies. So, why then, in the context of actual use-case scenarios, does Gradle seem to be so intertwined with Maven?
除了作为构建工具和依赖管理器(Maven 与 Gradle 竞争)之外,Maven 还引入了标准工件描述符(POM 文件)、标准项目布局(src/main/java 等) 和一个标准的工件布局 (groupId/version/artifactId-version.ext
),由于 Maven 的流行,它成为了行业中事实上的标准。它们并不是特别糟糕,所以它们暂时保留下来并且 Gradle 也可以与它们一起使用。
此外,Gradle 在 Maven 已经非常流行的时候出现了。要赶上这样一个流行的技术Gradle 必须提供一个干净和容易的迁移路径,这意味着支持 Maven 结构的项目、Maven 结构的本地缓存等。
Bintray advertises itself as a software publishing and distribution
platform. So, why was there a need to create JCenter as something
distinct from the rest of Bintray? What can JCenter do that Bintray
can't?
JCenter is not "something distinct" from Bintray. JCenter is a repository inside Bintray. This repository is special (we call this type of repository a "Central Repository"),因为它是由 Bintray 团队自己维护的,并且包括(或 link)世界上最大的 Java 库集合。对于很多 Java(或 Android)开发人员来说,他们不打算通过 Bintray 发布他们的作品,也不关心其他人的个人存储库,Bintray 上唯一感兴趣的是是JCenter。因此,人们将 JCenter 视为独立的东西。
I've created a test package and version on Bintray and I uploaded a
JAR file to the version. Is it possible to write a Gradle script that
will be able to include that JAR file as a dependency in a Java
project?
当然可以。 "Set Me Up" 按钮会打开一个 window,您可以在其中找到有关如何在 Gradle 中添加个人存储库的说明。完成后,您存储库中的工件将可用于在您的 Gradle 项目中进行解析。
Or does the package need to be "linked" with JCenter?
将您的包包含在 JCenter 中的好处是,其他熟悉 JCenter 作为第 3 方依赖项来源但不熟悉您在 Bintray 上的存储库的开发人员将能够找到并使用您的库。
希望对您有所帮助。
我和 JFrog, the company behind Bintray and [artifactory], see my profile 一起了解详情和 links.
我最近为 Java 编写了一个第 3 方库。目前,我正在通过 Github 和我拥有的网站分发该库,我可以在该网站上下载 JAR 文件。我想这样做,以便开发人员可以使用 Gradle 和 Maven(可能还有其他构建自动化工具)轻松地将我的第 3 方库包含在他们的项目中。
我是 Maven、Gradle、Bintray、JCenter、MavenCentral、Ivy 等的新手。但是,我确实有使用 Ant、Java 和 Linux 的经验。
我一直在尝试学习如何使用上面的 tools/platforms 发布我的第 3 方库,但我变得很困惑。
- 根据我的阅读,Gradle、Maven 和 Ant 是相互竞争的技术。那么,为什么在实际 use-case 场景的上下文中,Gradle 似乎与 Maven 如此交织在一起?
- Bintray 宣传自己是一个软件发布和分发平台。那么,为什么需要将 JCenter 创建为与 Bintray 的其余部分不同的东西? JCenter 能做什么而 Bintray 不能?
- 我已经在 Bintray 上创建了一个测试包和版本,并将一个 JAR 文件上传到该版本。是否可以编写一个 Gradle 脚本,将能够将该 JAR 文件作为依赖项包含在 Java 项目中?或者包是否需要 "linked" 与 JCenter?
基本上,任何人都可以告诉我上述所有技术是怎么回事吗?不要觉得有义务回答 post 中所有以问号结尾的句子。这些问题主要是为了展示我目前的理解水平。简单概述一下这些技术如何协同工作会很棒,如果可能的话,回答这个 post.
标题中的问题真的很难(几乎不可能)给出答案,因为你问了多个问题(我数了 5 个问号),而且你想要解释所有提到的技术如何一起(或不一起) ).这确实超出了 stackexchange 的范围和用处。
但是,如果它是您可以接受的专家,那么您可能想要的是:
1) 将您的工件部署到 Maven 中央仓库 ==> 请参阅 https://maven.apache.org/guides/mini/guide-central-repository-upload.html
2) 部署到其他一些众所周知的 public maven 仓库(如 sonatype)
3) 托管您自己的 public maven 存储库(可供其他人使用)并上传到那里,仍然通过网络和 github 页面保持 "advertising"
我会尝试回答所有以问号结尾的句子:)
Based on what I've read, Gradle, Maven, and Ant are competing technologies. So, why then, in the context of actual use-case scenarios, does Gradle seem to be so intertwined with Maven?
除了作为构建工具和依赖管理器(Maven 与 Gradle 竞争)之外,Maven 还引入了标准工件描述符(POM 文件)、标准项目布局(src/main/java 等) 和一个标准的工件布局 (groupId/version/artifactId-version.ext
),由于 Maven 的流行,它成为了行业中事实上的标准。它们并不是特别糟糕,所以它们暂时保留下来并且 Gradle 也可以与它们一起使用。
此外,Gradle 在 Maven 已经非常流行的时候出现了。要赶上这样一个流行的技术Gradle 必须提供一个干净和容易的迁移路径,这意味着支持 Maven 结构的项目、Maven 结构的本地缓存等。
Bintray advertises itself as a software publishing and distribution platform. So, why was there a need to create JCenter as something distinct from the rest of Bintray? What can JCenter do that Bintray can't?
JCenter is not "something distinct" from Bintray. JCenter is a repository inside Bintray. This repository is special (we call this type of repository a "Central Repository"),因为它是由 Bintray 团队自己维护的,并且包括(或 link)世界上最大的 Java 库集合。对于很多 Java(或 Android)开发人员来说,他们不打算通过 Bintray 发布他们的作品,也不关心其他人的个人存储库,Bintray 上唯一感兴趣的是是JCenter。因此,人们将 JCenter 视为独立的东西。
I've created a test package and version on Bintray and I uploaded a JAR file to the version. Is it possible to write a Gradle script that will be able to include that JAR file as a dependency in a Java project?
当然可以。 "Set Me Up" 按钮会打开一个 window,您可以在其中找到有关如何在 Gradle 中添加个人存储库的说明。完成后,您存储库中的工件将可用于在您的 Gradle 项目中进行解析。
Or does the package need to be "linked" with JCenter?
将您的包包含在 JCenter 中的好处是,其他熟悉 JCenter 作为第 3 方依赖项来源但不熟悉您在 Bintray 上的存储库的开发人员将能够找到并使用您的库。
希望对您有所帮助。
我和 JFrog, the company behind Bintray and [artifactory], see my profile 一起了解详情和 links.