如何配置 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=foopassword=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 中所述的相关&lt;plugin&gt; 部分添加到您的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 cleanthen mvn deploy 并获得两者的好处清理和部署,对吗?再次感谢!

以上是关于如何配置 Maven2 发布到 Artifactory?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能从另一个配置文件激活 Maven2 配置文件?

Maven的依赖性错误问题,怎么解决

让 Maven2 将资源复制到构建目录,但不将它们捆绑在 JAR 中

配置maven2

maven2中settings.xml的本地配置访问优先级大于其全局性配置吗?

Maven2 跨父子共享依赖(不重新声明子依赖)