gpt4 book ai didi

svn - Maven SCM URL 相对于父级

转载 作者:行者123 更新时间:2023-12-04 15:13:43 25 4
gpt4 key购买 nike

我们在 SVN 中有以下项目结构,其中一个父(不是聚合器)项目定义了通用配置。父级是单独管理和释放的。

trunk
+parent
pom.xml
+project1
pom.xml
+project1_1
pom.xml
+project1_2
pom.xml
+project2
pom.xml

因此,基本上每个真实项目(project1、project2)都用作其子项目的聚合器。常用的配置设置(Java Compiler 版本,其他插件)保存在 parent,用作 Maven parent在所有项目(项目 1、项目 2)中。

我想在父级中定义的设置之一是 Subversion 的 SCM URL,例如 http://svnhost/base/trunk/parent在父 pom.xml 中。

当我这样做时,单个项目会继承此设置,但当然不会反射(reflect)路径的相对性质。在 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 版开始,这似乎是固定的。所以你的 child poms 只定义属性而不是 scm url。

我不知道这是否有帮助。您不会在 pom.xml 中保存太多行,并且会引入人们不更改属性的危险。

如果您在父级中定义 parent.scm.url 的属性,然后在子级中使用该属性添加相对 url ( <scm.url>${parent.scm.url}/../myproject</scm.url> )
如果您根据该属性在 scm.url 中执行相对路径,您仍然没有保存很多配置吗?

我认为要完全满足您的需要,您需要编写一个插件来读取父 url,然后从当前工作副本中读取 url(因为 maven 不知道在哪里可以找到该项目 url,因为它没有配置),然后从中计算相对路径。与在每个 pom 中重复 scm.url 配置相比,我认为这很奇怪。

关于svn - Maven SCM URL 相对于父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13142998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com