Gradle + Jenkins + Artifactory Maven 回购?

Posted

技术标签:

【中文标题】Gradle + Jenkins + Artifactory Maven 回购?【英文标题】:Gradle + Jenkins + Artifactory Maven Repo? 【发布时间】:2014-04-21 10:03:10 【问题描述】:

我有一个 Java 项目,使用 Gradle 构建,使用 Jenkins CI 服务器,我想使用 Maven 兼容的工件发布到 Artifactory 服务器。该项目正在使用Git。如果可能的话,我还想使用 Jenkins 的发布管理功能。

这很令人困惑。至少有五个插件,具有很多重叠的冗余功能。一些插件似乎取代了其他插件。有些插件似乎需要其他插件。

仅供参考,五个相关插件似乎是:

1) Jenkins Artifactory 插件 https://wiki.jenkins-ci.org/display/JENKINS/Artifactory+Plugin

2) Gradle“maven”插件 http://www.gradle.org/docs/current/userguide/maven_plugin.html

3) Gradle“maven-publish”插件 http://www.gradle.org/docs/current/userguide/publishing_maven.html

4) Gradle“神器”插件 https://www.jfrog.com/confluence/display/RTF/Gradle+Artifactory+Plugin

5) Gradle "artifactory-publish" 插件 http://www.jfrog.com/confluence/display/RTF/Gradle+1.6+Publishing+Artifactory+Plugin

最好的设置方法是什么?

如果我使用 Jenkins Artifactory 插件而没有提到任何其他插件,我会收到错误消息:

No publish configurations specified for project ':' and the default 'archives' configuration does not exist.
Cannot publish pom for project ':my-great-app' since it does not contain the Maven plugin install task and task ':my-great-app:artifactoryPublish' does not specify a custom pom path.

我假设我需要在 build.gradle 中使用 mavenmaven-publish

maven-publish 被标记为maven 插件的孵化继任者。好多少?它有多稳定?

使用 Gradle Artifactory 插件与标准 maven 发布插件与使用 Jenkins 插件相比如何?

【问题讨论】:

【参考方案1】: Gradle Artifactory 插件: Gradle 可以使用 Artifactory 插件之一直接部署构建工件和构建信息,而无需在 CI 服务器中。 artifactory 插件与maven 插件一起使用并发布configurations,由maven 插件生成。 artifactory-publish 插件与maven-publish 插件一起使用并发布由maven-publish 插件生成的publicationsJenkins Artifactory 插件有两种工作模式: 提供 UI 以覆盖设置,在 Gradle 构建脚本中的 artifactoryartifactory-publish 插件中指定。 向 Gradle 脚本添加和配置 artifactory 插件(如果不存在)。 它还提供发布管理(两种模式)。

所以,您需要做出以下决定:

您是否使用 Gradle 插件之一。我们的建议是 - 使用它(构建脚本中的版本化配置与仅 UI 的配置相比是一个优势。 您要使用哪个插件 -- mavenmaven-publish。虽然后者仍在“孵化”,但它比前者灵活得多。一旦您知道要使用哪个 maven 插件,请选择适当的工件插件。 如果您想使用发布功能,无论哪种方式都需要 Artifactory Jenkins 插件,只需选中(或取消选中)“项目使用 Artifactory Gradle 插件”复选框。

【讨论】:

哇,惊人而全面的答案。这正是我需要知道的。官方文档应该包含类似这个答案的内容。 一个澄清,似乎如果你想使用 Gradle 工件插件,但仍然是 Jenkins 插件的发布管理部分,Jenkins 插件将覆盖你在 Gradle 构建中配置的任何设置脚本。在我的示例中,我想根据它是否为快照推送到不同的 repoKey,但我似乎无法完成这项工作。有什么建议吗? 对于最后一个要点,您是否选中 artifactory-publishartifactory 的“项目使用 Artifactory Gradle 插件”复选框? @wheeler 取决于你的项目是否使用 Artifactory Gradle 插件 :)

以上是关于Gradle + Jenkins + Artifactory Maven 回购?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins中配置gradle项目的坑

Gradle + Jenkins + Artifactory Maven 回购?

无法在 Jenkins 中运行程序“gradle”

jenkins + gradle ,卡在 app:processReleaseAGCPlugin

共享 jenkins 库 build.gradle 错误

如何用jenkins+gradle一次性构建多个java工程