爱德华姆莱特,
对于您想要做的事情有两种解决方案,但它们都不是最佳的。
根本问题
如果 Maven SCM 插件检测到<scm>
块已在您的父级中定义,但是NOT在你的孩子中,那么它会推断你的孩子的 SCM 路径只是父级的子目录。在你的情况下,你父母的网址本身包含一个额外的问题${project.artifactId}
在再次添加artifactId 之前,它会在子级别进行插值。
基本上,它正在执行以下操作:
project.scm.connection=${parent.scm.connection}/${project.artifactId}
project.scm.connection=${scmurl}/${project.artifactId}/${project.artifactId}
project.scm.connection=www.mysite.com/child-pom/child-pom
您父母的网址包含的事实${artifactId}
加剧了混乱,但即使您将 url 硬编码为www.mysite.com/parent-pom/
你将无法回避 SCM 插件认为的事实child-pom
是父级 url 的子目录,因此只需将其附加到路径的末尾即可。
您的 2 个选择是:
冗余但简单
将以下内容放入每个孩子的 pom.xml 文件中:
<scm>
<connection>${scmurl}/${artifactId}</connection>
</scm>
这很烦人,但相对简单。
高效但狡猾
让parent-pom包含以下内容:
<scm>
<connection>${scmurl}/</connection>
</scm>
这将导致每个子节点都有正确的 url,但父节点本身会变得混乱。
您可以通过将父级的正确网址放入配置文件中来解决该问题:
<profile>
<id>parent-profile</id>
<scm>
<connection>${scmurl}/parent-pom</connection>
</scm>
</profile>
$ mvn -Pparent-profile ...
它不太明显并且容易出现手动错误,但它可以避免编辑每个子项的 pom 文件。
希望有帮助。