我们在SVN中具有以下项目结构,其中父项(非聚合器)项目定义了常见配置.父母是单独管理和释放的.
trunk
+parent
pom.xml
+project1
pom.xml
+project1_1
pom.xml
+project1_2
pom.xml
+project2
pom.xml
Run Code Online (Sandbox Code Playgroud)
所以基本上每个真实项目(project1,project2)都用作其子项目的聚合器.常用配置设置(Java编译器版本,其他插件)保存在父级中,父级parent在所有项目(project1,project2)中用作Maven .
我想在父代中定义的一个设置是Subversion的SCM URL,例如http://svnhost/base/trunk/parent在父pom.xml中.
当我这样做时,各个项目继承此设置,但当然不反映路径的相对性质.在project1中,这解决了http://svnhost/base/trunk/parent/- 我已经检查过了mvn help:effective-pom.
有没有办法指定SCM连接,以便相对于父级解析?或者我是否必须在每个项目中提供SCM URL?
${svn.host}如果您使用和之类的属性${svn.path}来构建 scm.url,应该是可能的。发布插件有一个错误,其中属性在发布期间被替换:http://jira.codehaus.org/browse/MRELEASE-128,但自版本 2.3 以来似乎已修复。因此,您的子 pom 只定义属性,而不再定义 scm url。
我不知道这是否有帮助。您不会在 pom.xml 中保存太多行,并且会引入人们不更改属性的危险。
如果您在父级中定义了parent.scm.url的属性,然后在子级中使用该属性添加相对url(<scm.url>${parent.scm.url}/../myproject</scm.url>)如果您基于该属性在scm.url中执行相对路径,您仍然不会节省太多配置?
我认为要完全满足您的需要,您需要编写一个插件来读取父网址,然后从当前工作副本中读取网址(因为 maven 不知道还能在哪里找到该项目网址,因为它没有配置) ),然后从中计算相对路径。我认为与在每个 pom 中重复 scm.url 配置相比,这有点奇怪。
| 归档时间: |
|
| 查看次数: |
2919 次 |
| 最近记录: |