ArtifactId使用Maven Release Plugin附加到SCM Url

时间:2016-12-27 10:59:00

标签: git bitbucket maven-release-plugin

我有一个所有项目的主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标记复制到每个项目。

感谢您解决此问题的任何帮助。

1 个答案:

答案 0 :(得分:2)

Maven 版本低于或等于 3.6.1

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>  

Maven 3.6.1 之前的版本

你必须重新定义子 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>