Maven发布插件:连续执行一些部署

时间:2016-11-16 11:46:07

标签: java maven deployment nexus

我们需要将相同的工件部署到两个(或更多)nexus存储库中。 为此,我们使用两个具有不同distributionManagement部分的单独配置文件,如下所示:

<profile>
    <id>deploy-nexus1</id>
    <distributionManagement>
        <repository>
            <id>releases1</id>           
            <url>http://repositories/releases1</url>
        </repository>
        <snapshotRepository>
            <id>snapshots1</id>      
            <url>http://repositories/snapshots1</url>
        </snapshotRepository>
    </distributionManagement>
</profile>
<profile>
    <id>deploy-nexus2</id>
    <distributionManagement>
        <repository>
            <id>releases2</id>           
            <url>http://repositories/releases2</url>
        </repository>
        <snapshotRepository>
            <id>snapshots2</id>      
            <url>http://repositories/snapshots2</url>
        </snapshotRepository>
    </distributionManagement>
</profile>

期望的结果:在artifact:1.0.0releases1中拥有相同的releases2。 但是在运行命令之后:

mvn clean release:prepare -U
mvn clean release:perform -U -P deploy-nexus1
mvn clean release:perform -U -P deploy-nexus2

部署到releases1存储库成功,但部署到releases2返回:

  

没有提供SCM URL来执行

的发布

根据插件documentation,在每个release:perform之前我们需要运行release:prepare或提供自定义网址以在回购标记中进行标记。

我们如何执行一个工件版本的两个nexus部署? 是否可以在release:perform命令中添加额外的部署步骤?

提前致谢。

1 个答案:

答案 0 :(得分:0)

从您提及的文档:

我们最后可以看到:

  

发布完成后,发布.properties等   发布文件将从结帐中删除。

在我们阅读之前:

mvn release:执行

  

这依赖于release.properties存在   从之前的发布准备。如果不是这种情况,则需要   为目标提供URL和可选标记以执行发布   从。例如:

     

mvn org.apache.maven.plugins:maven-release-plugin:2.5.3:执行   -DconnectionUrl = SCM:SVN:https://svn.mycompany.com/repos/path/to/myproject/tags/myproject-1.2.3

您的错误是No SCM URL was provide to perform the release from,所以我认为您应该精确释放已发布组件的标记,因为release.properties在第一个release:perform之后不再存在。 你可以这样做:

mvn clean release:perform -U -P deploy-nexus2 -DconnectionUrl=scm:svn:urlOfTaggedProject

避免在标记网址末尾输入的另一个解决方案是在当前文件夹中的第一个release.properties之前复制release:perform。例如,通过不同地复制和重命名,在第一次执行后,您可以将其重命名为release.properties,以便在第二个release:perform期间重复使用它。使用非常简单的脚本,它可以是自动化的 我不知道它是否可行,因为我从未有过这个要求。也许,你会有其他副作用,这些只是猜测 但是不要犹豫做反馈:)