我有一个由多个模块和子模块组成的Maven项目。
我使用SVN对源文件进行版本控制。
简短的故事: 如何在POM文件的scm属性中指定URL,这些URL相对于其父级的URL。
长篇故事: 一些模块及其子模块共享相同的版本号/发布流程,而其他模块则使用独立的版本号。对于具有独立版本号的模块,我设置了分支/主干/标记布局,以使发布插件正常工作。
为此,在我的存储库中有两个SVN布局。一个包含所有的主干/分支/标记混乱,另一个包含一个干净的、准备好进行检出的工作目录,其中包含对主干的svn:external引用。
它看起来像这样:您有真实的SVN布局,其中包含主干/分支/标记混乱: pom.xml(主要父级) utils branches tags trunk pom.xml、src、target等 data-model(已发布) branches tags trunk pom.xml lib pom.xml、src、target等 server pom.xml、src、target等 client pom.xml、src、target等 bin-modules bin-module-1(已发布) branches tags trunk pom.xml、src、target等 bin-module-2(已发布) branches tags trunk pom.xml、src、target等
以及工作目录的干净布局,使用“svn:externals”标签隐藏分支/主干内容:
但是似乎都不起作用。属性${...}甚至没有被替换。 那么,我该如何覆盖相对于其父SCM URL的SCM路径? 任何帮助和建议将不胜感激。 提前致谢, Raphael
简短的故事: 如何在POM文件的scm属性中指定URL,这些URL相对于其父级的URL。
长篇故事: 一些模块及其子模块共享相同的版本号/发布流程,而其他模块则使用独立的版本号。对于具有独立版本号的模块,我设置了分支/主干/标记布局,以使发布插件正常工作。
为此,在我的存储库中有两个SVN布局。一个包含所有的主干/分支/标记混乱,另一个包含一个干净的、准备好进行检出的工作目录,其中包含对主干的svn:external引用。
它看起来像这样:您有真实的SVN布局,其中包含主干/分支/标记混乱: pom.xml(主要父级) utils branches tags trunk pom.xml、src、target等 data-model(已发布) branches tags trunk pom.xml lib pom.xml、src、target等 server pom.xml、src、target等 client pom.xml、src、target等 bin-modules bin-module-1(已发布) branches tags trunk pom.xml、src、target等 bin-module-2(已发布) branches tags trunk pom.xml、src、target等
以及工作目录的干净布局,使用“svn:externals”标签隐藏分支/主干内容:
- pom.xml(主要父级项目)
- utils(-> utils/trunk)
- pom.xml、src、target等...
- data-model(-> data-model/trunk)
- pom.xml
- lib
- pom.xml、src、target等...
- server
- pom.xml、src、target等...
- client
- pom.xml、src、target等...
- bin-modules
- pom.xml
- bin-module-1(-> bin-module-1/trunk)
- pom.xml、src、target等...
- bin-module-2(-> bin-module-2/trunk)
- pom.xml、src、target等...
到目前为止,一切都很好。
我已经在我的父POM中设置了根SCM URL,并且Maven正确地暗示了子模块的URL。
我用 mvn help:effective-pom
检查过。
我有以下SCM URL:
- root: [根URL]
- utils:[根URL]/utils
- data-model:[根URL]/data-model/
- data-model /lib:[根URL]/data-model/lib
- data-model/client:[根URL]/data-model/client
- data-model/server:[根URL]/data-model/server
- bin-module-1:[根URL]/bin-module-1/
- bin-module-2:[根URL]/bin-module-2/
但是Maven没有意识到实际的SVN布局。 我希望它看到:
- root:[根目录链接]
- utils:[根目录链接]/utils/trunk
- data-model:[根目录链接]/data-model/trunk
- data-model/lib:[根目录链接]/data-model/trunk/lib
- data-model/client:[根目录链接]/data-model/trunk/client
- data-model/server:[根目录链接]/data-model/trunk/server
- bin-module-1:[根目录链接]/bin-module-1/trunk
- bin-module-2:[根目录链接]/bin-module-2/trunk
为此,我需要在data-model、bin-module-1和bin-module-2的pom.xml
文件中添加一个scm部分。
我尝试了以下代码(用于data-model):
<scm>
<connection>./data-model/trunk</connection>
<developerConnection>./sdr/trunk</developerConnection>
<url>./sdr/trunk</url
</scm>
或者
<scm>
<connection>${project.parent.scm.connection}/data-model/trunk</connection>
<developerConnection>${project.parent.scm.developerConnection}/data-model/trunk</developerConnection>
<url>${project.parent.scm.url}/data-model/trunk</url>
</scm>
但是似乎都不起作用。属性${...}甚至没有被替换。 那么,我该如何覆盖相对于其父SCM URL的SCM路径? 任何帮助和建议将不胜感激。 提前致谢, Raphael