Jenkins - 将工件部署到Maven存储库

时间:2017-08-08 14:13:17

标签: maven jenkins deployment


我有一个基本的Springboot Maven项目,我希望能够部署它并进行API调用,因为它在本地工作。
我有一个带有Jenkins的远程linux机器,我能够正确地构建我的应用程序。现在我想在同一个linux机器上,在某个文件夹/deploy中部署这个版本 现在我已经在Jenkins上添加了一个 Post Build Action 将工件部署到Maven存储库,其中包含以下参数: enter image description here 现在我没有对我的pom.xml或我的专家settings.xml进行任何更改。 我得到的错误如下:

[INFO] Deployment in http://localhost:8080/deploy (id=test2,uniqueVersion=true)
Deploying the main artifact reag.login-0.0.1-SNAPSHOT.jar
Downloading: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml
ERROR: Failed to retrieve remote metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml: Could not transfer metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml from/to deploymentRepo (http://localhost:8080/deploy): Access denied to: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden.
org.apache.maven.artifact.deployer.ArtifactDeploymentException: Failed to retrieve remote metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml: Could not transfer metadata reag.login:reag.login:0.0.1-SNAPSHOT/maven-metadata.xml from/to deploymentRepo (http://localhost:8080/deploy): Access denied to: http://localhost:8080/deploy/reag/login/reag.login/0.0.1-SNAPSHOT/maven-metadata.xml , ReasonPhrase:Forbidden.

我工作的机器受用户名和密码保护,我试图将它们放在settings.xml文件中但没有任何变化。有谁知道使这个过程有效的步骤是什么? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

本地工件部署由mvn clean install完成。 install目标将您的工件复制到本地maven存储库(默认[USER_HOME] /。m2 / repository)。

如果您要将工件部署到其他服务,例如Nexus Maven Repository,那么您需要在settings.xml部署并提供该计算机的凭据,甚至更好地设置私有/机器的公钥认证。

我认为Jenkins正在尝试进行远程部署,只有在您的计算机上运行Maven资源库时才能正常工作(如Nexus)

答案 1 :(得分:0)

Maven说法中的“部署”意味着“将构建的工件及其元数据(例如pom文件)上传到存储库管理器。”

意味着“将工件复制到您想要的任何位置”。

因此,正如@funfried所提到的,您需要实际运行存储库管理器。

如果是这种情况,则以下是您设置maven配置的方法。

Maven通过id元素将凭据链接到服务器。

您的settings.xml文件的凭据设置如下:

<servers>
    <server>
        <id>newhope-nexus</id>
        <username>steve</username>
        <password>{1T7Jmp/PBoQH4cvFjZDTaDe/F/Z+D9rJ925rf+3H1LY=}</password>
    </server>
</servers>

然后你的项目模型(项目pom或父pom)应该定义它distributionManagement

<distributionManagement>
    <repository>
        <id>newhope-nexus</id>
        <url>http://newhope:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
        <id>newhope-nexus</id>
        <url>http://newhope:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

请注意,所有ID都匹配。

Jenkins的mvn deploy应该可以正常工作。