Svn 具有maven版本的分层标记结构
我们在一个SVN存储库中有许多较小的项目。存储库具有以下结构:Svn 具有maven版本的分层标记结构,svn,maven-2,maven-release-plugin,maven-scm,Svn,Maven 2,Maven Release Plugin,Maven Scm,我们在一个SVN存储库中有许多较小的项目。存储库具有以下结构: /trunk /artifactId1 /artifactId2 /groupId /artifactId3 /artifactId4 /branches ... see above /tags 所以它看起来有点像maven存储库 现在我希望maven发布插件在标记时创建类似的结构。我将插件配置更改为: <tagNameFormat>@{project.groupId}/@
/trunk
/artifactId1
/artifactId2
/groupId
/artifactId3
/artifactId4
/branches
... see above
/tags
所以它看起来有点像maven存储库
现在我希望maven发布插件在标记时创建类似的结构。我将插件配置更改为:
<tagNameFormat>@{project.groupId}/@{project.artifactId}/@{project.version}</tagNameFormat>
{project.groupId}/{project.artifactId}/{project.version}
maven发布插件将创建正确的SVN url:
但是,存储库中还不存在路径结构,因此SVN“标记”操作失败
我不想每次向需要标记支持的SVN repo添加新工件时都创建路径结构。有没有一种方法可以配置maven在标记之前先创建父结构?或者我需要为maven创建一个插件来实现这一点吗?问题只是因为tags文件夹不包含groupId和artifactid文件夹。您需要使用发布插件的配置设置。这可以在超级pom中的插件管理部分完成。我已经面临这种问题,但我不会给你一个直接的答案来解决你的问题。事实上,你试图做一些不以“专业方式”的事情 据我所知,您尝试标记:
- 只有一个工件,将其放入groupId/artifactID/version
- 或所有回购协议(例如,全部在主干下)
[...]
[...]
[...]
org.apache.maven.plugins
maven发布插件
2.3.1
${groupId}/${artifactId}/@{project.version}
[...]
[...]
[...]
正如khmarbaise所说,您还可以使用tagBase和tagFormat的混合来修改tagBase(以覆盖默认行为)。
我从未尝试过,但它应该可以工作。请注意,版本使用@而不是$(在提交期间或之前不得替换,但在标记操作期间稍后使用)
显然,你必须为你想用这种方式标记的每个工件创建一个合适的结构,但是你只需要做一次
标记所有工件
如果您想一次性标记所有工件,这将非常困难。
我不确定这是否是您想要的,因此我将简要介绍,只提供一些线索:
- 如果您的组件链接在一起,只需设想构建一个多模块项目(并在其上运行mvn发行版),所有模块都嵌套在其中(这是正确的方法)
- 如果它们不是,您就不必将它们标记在一起;D
祝你好运:)因为你发现嵌套的标记和分支不是路径-没有工具能够在开箱即用的情况下很好地使用它们
听起来ArtifactID1-4是独立的svn项目,它们不是一起构建和发布的。也许它们都应该是svn中的一个项目,有自己的分支标记和主干文件夹。您应该避免您提到的混乱以及嵌套分支和标记的混乱。为什么不在svn中创建默认TTB文件夹结构?@khmarbaise,因为当您有大量工件和定期发布时,它会造成混乱。如果它造成混乱,请移动标记/归档中的旧标记,即使这显然不是更好的解决方案(scm链接到您的pom不会跟随您的移动)
<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>