Maven 发布插件部署问题
Posted
技术标签:
【中文标题】Maven 发布插件部署问题【英文标题】:Maven release plugin deploy issue 【发布时间】:2013-01-09 06:46:20 【问题描述】:我的版本:
Maven 3.0.4 詹金斯 1.499 Nexus 2.2 maven-release-plugin 3.2 jdk 1.6 AIX 6.1settings.xml
<server>
<id>snapshots</id>
<username>deploy</username>
<password>pass123</password>
</server>
<server>
<id>releases</id>
<username>deploy</username>
<password>pass123</password>
</server>
我有很多在 Jenkins 中运行的构建,它们使用 maven deploy
插件并将工件上传到 Nexus 存储库。由于同一用户能够部署快照,我们可以消除 Nexus 中的用户角色/权限问题。 (我仍然为这个用户提供了管理员角色进行测试)
公司父 POM
<distributionManagement>
<repository>
<id>releases</id>
<url>http://myserver/repositories/releases</url>
<layout>default</layout>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://myserver/repositories/snapshots</url>
<layout>default</layout>
</snapshotRepository>
</distributionManagement>
项目 POM
<scm>
<connection>scm:svn:http://svnserver/tags/1.2.3</connection>
<developerConnection>scm:svn:http://svnserver/tags/1.2.3</developerConnection>
</scm>
我已确认 Jenkins 工作区中的 /target/checkout/
包含最新的 POM。还在项目 POM 中添加了<distributionManagement>
现在,当我在 Jenkins 中使用 mvn release:perform
运行 maven 发布插件时,我仍然得到这个:
Deployment failed: repository element was not specified in the POM inside
distributionManagement element or in -DaltDeploymentRepository=id::layout
::url parameter
release:prepare
没有显示错误
按预期创建 SVN 标签
然后在部署过程中,它失败并出现上述错误
正如我所提到的,快照部署经常发生并且没有错误,因此 settings.xml、distributionManagement 和 Nexus 权限似乎都井然有序。
我可以手动访问http://myserver/repositories/releases
我已与 mvn help:effective-pom
和 mvn help:effective-settings
核对过,一切似乎都井井有条
有什么想法吗?
【问题讨论】:
您能否尝试使用发布版本和快照版本进行mvn deploy
。如果您得到相同的结果(仅在发布版本中失败),这会将错误定位到连接/权限/等,而不是 release
插件。
另外,您能否将 sudo
作为运行它的用户进入您的 Jenkins 框并确认您有同样的问题(只是试图从表中消除因素)。另外,你能确认一下你修改的settings.xml文件真的被使用了吗,here's a question regarding this。
@SeanConnolly .. 谢谢 1.关于[DEBUG] Reading global..
的好消息,我检查了它的正确设置。 2. 不能 sudo - 无权访问该框 3. Mvn deploy 我将稍后尝试。 4. 我只是尝试为另一个 maven 项目运行相同的所有内容,然后猜猜是什么......它有效。因此,问题被缩小到单个多模块项目,这很可能意味着其中一个 POM 出现错误。
@SeanConnolly .. 归结为一个愚蠢的错误。一个用户弄乱了一个子 POM,Maven 像往常一样没有在日志中给出正确的错误。这意味着子 POM 没有到达公司父级,因此出现错误。 Maven 没有说哪个 POM 是问题,所以我假设项目,父级没问题,让我走错了方向。对不起,如果我浪费了你的时间
很高兴你解决了,干杯。
【参考方案1】:
错误信息非常明确。您的 POM 中没有 distributionManagement。所以你可能没有继承父 pom。
运行
mvn help:effective-pom
在您尝试部署和检查的项目中。或者查看 IDE(Eclipse 或其他)中的有效 POM。
然后找出要使用的正确父 pom 或根据需要插入 distribtionManagement 段。
【讨论】:
以上是关于Maven 发布插件部署问题的主要内容,如果未能解决你的问题,请参考以下文章