我有一个所有项目的主POM。 POM包含以下SCM部分:
<parent>
<groupId>com.company</groupId>
<artifactId>master</artifactId>
<version>...</version>
</parent>
<groupId>com.company.group</groupId>
<artifactId>project-foo</artifactId>
<version>...</version>
<packaging>jar</packaging>
<name>project FOO</name>
<properties>
<scm.project.name>project-foo</scm.project.name>
</properties>
现在,我有一个maven多模块项目,这是父POM:
;with cte
as
(
select id,
lag(id) over (order by id) as previousrwo,
lead(id) over (order by id) as nextrow
from @tbl
)
select * from cte where id=1162
执行发布插件以释放主POM(第一个片段)时,它可以正常工作。但是,在执行发布插件以释放多模块项目(第二个代码段)时,它会失败,并说:
[错误]无法执行目标 org.apache.maven.plugins:行家释放小插件:2.5.3:准备 项目project-foo上的(default-cli):无法提交文件 [错误]提供商消息: [错误] git-push命令失败。 [ERROR]命令输出:[ERROR]致命:远程错误:未找到存储库 [错误]请求的存储库不存在,或者您没有权限 [错误]访问它。
在日志中,我还可以看到存储库URL。
对于Master POM的工作版本,它使用
https://user:******** @ bitbucket.server.de/scm/tsu/maven-master.git 参考文献/头的/ dev:参/头的/ dev
对于多模块项目的非工作版本,它使用
https://user:******** @ bitbucket.server.de/scm/tsu/project-foo.git/project-foo refs / heads / dev:refs / heads / dev
在发布多模块项目时,似乎将项目的工件ID附加到URL。
将整个SCM部分复制到多模块项目并进行修改时,它可以正常工作。但是,我只想在主POM中插入一个属性,以避免将SCM标记复制到每个项目。
感谢您解决此问题的任何帮助。
答案 0 :(得分:2)
从 Maven 3.6.1 开始,您可以在 pom 父项中设置以下内容:
<scm child.scm.connection.inherit.append.path="false"
child.scm.developerConnection.inherit.append.path="false"
child.scm.url.inherit.append.path="false">
<connection>scm:git:https://user@bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</connection>
<developerConnection>scm:git:https://user@bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</developerConnection>
<url>https://bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</url>
<tag>HEAD</tag>
</scm>
你必须重新定义子 poms 中的 scm :
<scm child.scm.connection.inherit.append.path="false"
child.scm.developerConnection.inherit.append.path="false"
child.scm.url.inherit.append.path="false">
<connection>scm:git:https://user@bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</connection>
<developerConnection>scm:git:https://user@bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</developerConnection>
<url>https://bitbucket.server.de/scm/${scm.repository.name}/${scm.project.name}.git</url>
<tag>HEAD</tag>
</scm>