我已经面临这种问题,但我不会给你一个直接的答案来解决你的问题。确实,您尝试做一些不是“专家方式”的事情......
据我了解,您尝试标记:
- 只有一个工件,将其放入 groupId/artifactID/version
- 或所有回购(例如所有在主干下)。
标记一个工件
在仅标记 artifact3 的情况下,您是对的。第一次尝试标记时,您无法执行此操作,因为无法在一个命令中创建完整结构(svn 标记确实是副本,并且复制命令不支持允许复制和创建目录的选项,例如“ Linux 上的 mkdir -p"。
但是,但是 Maven 约定(默认行为)是 tags/artifactId-version,您可以创建自己的结构和自己的模板来执行发布(通过您的 IDE 或在 svn 命令行中)。然后,根据需要更改 tagNameFormat (并且您似乎正在这样做):
<project>
[...]
<build>
[...]
<plugins>
[...]
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<tagNameFormat>${groupId}/${artifactId}/@{project.version}</tagNameFormat>
</configuration>
</plugin>
[...]
</plugins>
[...]
</build>
[...]
</project>
正如 khmarbaise 所说,您还可以使用 tagBase 和 tagFormat 混合修改 tagBase(以覆盖默认行为)。我从未尝试过,但它应该可以工作。请注意,版本使用 @ 而不是 $(在提交期间或之前不得替换,但在标记操作期间稍后使用)。
显然,您必须为要以这种方式标记的每个工件创建合适的结构。但你只需要做一次。
标记所有工件
如果您想一次性标记所有工件,这将更加困难。我不确定这是你想要的,所以我会简短,只提供一些线索:
- 如果您的组件链接在一起,只需设想构建一个多模块项目(并在其上运行 mvn release),所有模块都嵌套在其中(这是正确的方法)
- 如果不是,您不必将它们标记在一起;D
如果我误解了你的意图,请不要犹豫,回复我,提供更多信息。
祝你好运 :)