为什么Jenkins上的M2发布插件没有通过Artifactory的认证?

为什么Jenkins上的M2发布插件没有通过Artifactory的认证?,jenkins,continuous-integration,maven-release-plugin,artifactory,Jenkins,Continuous Integration,Maven Release Plugin,Artifactory,我们正试图让客户将发布的工件部署到我们的工件服务器。我们的pom.xml中的配置如下所示 .... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.3.2</version> </plugin> .... &

我们正试图让客户将发布的工件部署到我们的工件服务器。我们的
pom.xml
中的配置如下所示

....
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.3.2</version>
</plugin>
....
<distributionManagement>
    <repository>
        <id>artifactory</id>
        <url>http://example.com/artifactory/jenkins-release</url>
    </repository>
</distributionManagement>
如果我们现在在Jenkins上开始发布构建,Maven告诉我们它从artifactory那里收到了一个HTTP401

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project example-maven-plugin: Failed to deploy artifacts: Could not transfer artifact com.example.maven.plugins:example-maven-plugin:jar:0.0.9 from/to artifactory (http://example.com/artifactory/jenkins-release): Failed to transfer file: http://example.com/artifactory/jenkins-release/com/example/maven/plugins/example-maven-plugin/0.0.9/example-maven-plugin-0.0.9.jar. Return code is: 401, ReasonPhrase:Unauthorized. -> [Help 1]
在服务器日志中,我们看到一个用户“未经身份验证的用户”正在尝试对此URL执行HTTP PUT请求

我们在Maven或Jenkins中是否缺少一些配置?凭据是正确的,如果我在本地计算机上使用Jenkins提供的settings.xml,一切正常。

2.2.2之前的版本使它忽略配置文件提供程序传递给Maven的设置文件。解决方案是在项目pom.xml中指定一个更新的maven版本插件,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.4.2</version>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven发布插件
2.4.2
2.2.2之前的版本使其忽略配置文件提供程序传递给Maven的设置文件。解决方案是在项目pom.xml中指定一个更新的maven版本插件,如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.4.2</version>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven发布插件
2.4.2

詹金斯似乎没有收到您提供的设置文件。不知道为什么,还有一点无关的话题,为什么不使用?它完全解决了这个问题,并内置了发布功能。这就是我们所想的,可能是插件中的一个bug,但我想确保我们没有遗漏任何东西。我们确实使用这个插件,但只用于自动部署快照构建。我们发现该插件的发布管理缺少Jenkins M2发布插件所具有的一些功能(例如,写入SCM的单独凭证,区分发布版本/非发布版本,…),您可以使用完全自定义发布逻辑。一些例子在感谢中,@JBaruch。我们将查看一下。看起来Jenkins没有选择您提供的设置文件。不知道为什么,还有一点无关的话题,为什么不使用?它完全解决了这个问题,并内置了发布功能。这就是我们所想的,可能是插件中的一个bug,但我想确保我们没有遗漏任何东西。我们确实使用这个插件,但只用于自动部署快照构建。我们发现该插件的发布管理缺少Jenkins M2发布插件所具有的一些功能(例如,写入SCM的单独凭证,区分发布版本/非发布版本,…),您可以使用完全自定义发布逻辑。一些例子在感谢中,@JBaruch。我们会看一看。谢谢你的回复,但我们当时使用的是2.3.2。Doh,现在看到你问题中的版本号了!除此之外,对你的问题的描述与我的完全相同,因此我想我将保留我的答案,以防它对其他人有所帮助。对这个答案进行提升投票,因为它为我们解决了一个相关但略有不同的问题。在另一个模块中,我们没有为这个插件设置版本,所以Maven使用了2.7.x。切换回2.4.1解决了问题。感谢您的回复,但我们当时使用的是2.3.2。Doh,现在看到您问题中的版本号了!除此之外,对你的问题的描述与我的完全相同,因此我想我将保留我的答案,以防它对其他人有所帮助。对这个答案进行提升投票,因为它为我们解决了一个相关但略有不同的问题。在另一个模块中,我们没有为这个插件设置版本,所以Maven使用了2.7.x。切换回2.4.1修复了该问题。