gpt4 book ai didi

java - 如何发布常规的非 Android Java 库,以便通过 Maven 和 Gradle 构建脚本将其包含在 Java 项目中?

转载 作者:搜寻专家 更新时间:2023-11-01 02:40:07 27 4
gpt4 key购买 nike

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

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

我一直在尝试学习如何使用上述工具/平台发布我的第 3 方库,但我感到很困惑。

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

基本上,任何人都可以告诉我上述所有技术是怎么回事吗?不要觉得有义务回答这篇文章中所有以问号结尾的句子。这些问题主要是为了展示我目前的理解水平。简单概述一下这些技术如何协同工作会很棒,如果可能,还可以回答本文标题中的问题。

最佳答案

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

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 还引入了标准 Artifact 描述符(POM 文件)、标准项目布局(src/main/java 等)和标准 Artifact 布局(groupId/version/artifactId-version.ext) 由于 Maven 的流行,它成为了行业中事实上的标准。它们并不是特别糟糕,所以它们暂时保留下来,Gradle 也可以与它们一起工作。

另外,在Maven已经格外流行的时候,Gradle出现了。为了 catch 这种流行的技术,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与 Bintray 不是“不同的东西”。 JCenter 是一个 repository在 Bintray 里面。这个存储库很特别(我们称这种类型的存储库为 "Central Repository" ),因为它由 Bintray 团队自己维护,并且包含(或链接)世界上最大的 Java 库集合。对于许多不打算通过 Bintray 发布他们的工作并且不关心其他人的个人存储库的 Java(或 Android)开发人员来说,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?

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

Or does the package need to be "linked" with JCenter?

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

希望对您有所帮助。


我在 JFrog , 背后的公司Bintray [artifactory] , 请参阅 my profile获取详细信息和链接。

关于java - 如何发布常规的非 Android Java 库,以便通过 Maven 和 Gradle 构建脚本将其包含在 Java 项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35615548/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com