我们需要将相同的工件部署到两个(或更多)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.0
和releases1
中拥有相同的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
命令中添加额外的部署步骤?
提前致谢。
答案 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
期间重复使用它。使用非常简单的脚本,它可以是自动化的
我不知道它是否可行,因为我从未有过这个要求。也许,你会有其他副作用,这些只是猜测
但是不要犹豫做反馈:)