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.1

settings.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 中添加了&lt;distributionManagement&gt;



现在,当我在 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-pommvn 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 发布插件部署问题的主要内容,如果未能解决你的问题,请参考以下文章

Maven 发布插件失败:源工件被部署两次

Wildfly Maven插件+热部署

tomcat7 maven插件部署失败

Maven:如何阻止部署插件记录上传进度?

Maven 发布插件:如何在发布时仅部署分发 jar:执行

Maven2:Cargo 插件热部署 & Jonas 支持