如何配置 Maven2 发布到 Artifactory?
Posted
技术标签:
【中文标题】如何配置 Maven2 发布到 Artifactory?【英文标题】:How to configure Maven2 to publish to Artifactory? 【发布时间】:2014-06-09 14:25:23 【问题描述】:目前我有一个 Maven2 项目,它会在您运行时构建一个 JAR:
mvn clean package
我现在需要调整 pom.xml
以将此 JAR (myapp.jar
) 发布到运行在以下位置的 Artifactory 服务器:
http://myartifactory/artifactory/simple/myorg/myapp/0.1
我尝试将<repositories>
元素添加到我的pom.xml
,但此配置没有发布任何内容:
<repositories>
<repository>
<id>myartifactory</id>
<url>http://myartifactory/artifactory/simple/</url>
</repository>
</repositories>
关于如何让出版工作发挥作用有什么想法吗?为简单起见,假设此 Artifactory 存储库已通过身份验证以接受来自具有 username=foo
和 password=bar
的用户的发布/写入。
【问题讨论】:
了解您看到的错误会很有帮助。您可能只需要 ~/.m2 目录中的 settings.xml 文件,其中包含访问该服务器的凭据。 感谢@Jonathan (+1) - 我在创建这个问题时很着急,并没有准确地解释情况(请参阅我的编辑)。本身没有错误,只是没有发布。如果此配置对您来说看起来不错(并且没有遗漏任何内容或配置错误),那么您能否指出我的方向(或提供作为答案)具有正确用户信誉的settings.xml
示例?再次感谢!
【参考方案1】:
您有两种选择(请注意后者是推荐的一种):
将DistributionManagement
部分添加到您的pom 并将server
部分添加到您的settings.xml
-
假设您要部署到 libs-snapshot-local 存储库。在这种情况下,您需要转到 Artifactory 中的树浏览器,关注存储库级别,复制
Distribution Management
sn-p 并将其粘贴到您的 pom.xml
中:
接下来,您需要告诉 Maven 凭据。为此,点击右上角的用户名,输入密码解锁屏幕,从Maven Settings
面板复制server
标签:
这个你粘贴到你的settings.xml
。不要忘记将 $server-id 替换为真实的服务器 ID(您现在在分发管理中拥有的那个)。
现在,只需运行 mvn deploy
即可享受。
使用 Maven Artifactory 插件:
-
将wiki 中所述的相关
<plugin>
部分添加到您的pom.xml
。它包括目标存储库和凭据(请使用外部凭据源,例如环境变量或系统属性)。
运行mvn deploy
,不仅可以部署到 Artifactory,还可以享受如下所述的其他功能。
Artifactory Maven 插件的附加功能(在常规 Maven 部署之上):
-
允许将custom properties 添加到已部署的文件中
提供构建材料清单 (buildInfo),允许 Build Integration 使用任何构建服务器(即使是 JFrog 不支持的那些),甚至可以使用独立构建(根本没有构建服务器)。
【讨论】:
感谢@JBaruch (+1) - 运行mvn deploy
是否还会运行mvn clean package
?再次感谢您提供如此出色的答案!
请阅读一下Maven lifecycle。 install
运行 package
,但不运行 clean
(这是一个不同的生命周期)。如果您认为答案正确,请采纳。
再次感谢@JBaruch (+1) - 最后一次跟进:所以看来我可以运行 mvn clean
和 then mvn deploy
并获得两者的好处清理和部署,对吗?再次感谢!以上是关于如何配置 Maven2 发布到 Artifactory?的主要内容,如果未能解决你的问题,请参考以下文章
让 Maven2 将资源复制到构建目录,但不将它们捆绑在 JAR 中