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 中使用 maven
或 maven-publish
?
maven-publish
被标记为maven
插件的孵化继任者。好多少?它有多稳定?
使用 Gradle Artifactory 插件与标准 maven 发布插件与使用 Jenkins 插件相比如何?
【问题讨论】:
【参考方案1】: Gradle Artifactory 插件: Gradle 可以使用 Artifactory 插件之一直接部署构建工件和构建信息,而无需在 CI 服务器中。artifactory
插件与maven
插件一起使用并发布configurations
,由maven
插件生成。
artifactory-publish
插件与maven-publish
插件一起使用并发布由maven-publish
插件生成的publications
。
Jenkins Artifactory 插件有两种工作模式:
提供 UI 以覆盖设置,在 Gradle 构建脚本中的 artifactory
或 artifactory-publish
插件中指定。
向 Gradle 脚本添加和配置 artifactory
插件(如果不存在)。
它还提供发布管理(两种模式)。
所以,您需要做出以下决定:
您是否使用 Gradle 插件之一。我们的建议是 - 使用它(构建脚本中的版本化配置与仅 UI 的配置相比是一个优势。 您要使用哪个插件 --maven
或 maven-publish
。虽然后者仍在“孵化”,但它比前者灵活得多。一旦您知道要使用哪个 maven 插件,请选择适当的工件插件。
如果您想使用发布功能,无论哪种方式都需要 Artifactory Jenkins 插件,只需选中(或取消选中)“项目使用 Artifactory Gradle 插件”复选框。
【讨论】:
哇,惊人而全面的答案。这正是我需要知道的。官方文档应该包含类似这个答案的内容。 一个澄清,似乎如果你想使用 Gradle 工件插件,但仍然是 Jenkins 插件的发布管理部分,Jenkins 插件将覆盖你在 Gradle 构建中配置的任何设置脚本。在我的示例中,我想根据它是否为快照推送到不同的 repoKey,但我似乎无法完成这项工作。有什么建议吗? 对于最后一个要点,您是否选中artifactory-publish
或 artifactory
的“项目使用 Artifactory Gradle 插件”复选框?
@wheeler 取决于你的项目是否使用 Artifactory Gradle 插件 :)以上是关于Gradle + Jenkins + Artifactory Maven 回购?的主要内容,如果未能解决你的问题,请参考以下文章
Gradle + Jenkins + Artifactory Maven 回购?