我有一个基本的Springboot Maven
项目,我希望能够部署它并进行API调用,因为它在本地工作。
我有一个带有Jenkins
的远程linux机器,我能够正确地构建我的应用程序。现在我想在同一个linux机器上,在某个文件夹/deploy
中部署这个版本
现在我已经在Jenkins上添加了一个 Post Build Action 来将工件部署到Maven存储库,其中包含以下参数:
现在我没有对我的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
文件中但没有任何变化。有谁知道使这个过程有效的步骤是什么?
提前谢谢。
答案 0 :(得分:0)
本地工件部署由mvn clean install
完成。
install
目标将您的工件复制到本地maven存储库(默认[USER_HOME] /。m2 / repository)。
如果您要将工件部署到其他服务,例如Nexus Maven Repository,那么您需要在settings.xml
部署并提供该计算机的凭据,甚至更好地设置私有/机器的公钥认证。
我认为Jenkins正在尝试进行远程部署,只有在您的计算机上运行Maven资源库时才能正常工作(如Nexus)
答案 1 :(得分:0)
不意味着“将工件复制到您想要的任何位置”。
因此,正如@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
应该可以正常工作。