1

我们正在尝试让M2 发布插件将发布的工件部署到我们的 Artifactory 服务器。我们的配置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>

使用配置文件提供插件,我们指定了一个settings.xml具有正确凭据的全局

<settings>
    <servers>
        <server>
            <id>artifactory</id>
            <username>jenkins</username>
            <password>secret!</password>
        </server>
    </servers>
</settings>

如果我们现在在 Jenkins 上开始发布构建,Maven 会告诉我们它在那里收到了来自 artifactory 的 HTTP 401

[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]

在服务器日志中,我们看到用户“non_authenticated_user”正在尝试对该 URL 执行 HTTP PUT 请求。

我们缺少 Maven 或 Jenkins 中的一些配置吗?凭据是正确的,如果我在本地机器上使用来自 Jenkins 的 settings.xml,一切都会按预期工作。

4

1 回答 1

1

在2.2.2 之前的 Maven 发布插件中有一个错误,它会忽略 Config File Provider 传递给 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>
于 2013-12-12T09:19:46.717 回答