当前位置: 首页 > 知识库问答 >
问题:

使用Maven发布插件将ArtifactId附加到SCM Url

邓德惠
2023-03-14

我对所有项目都有一个主POM。POM包含以下SCM部分:

    <groupId>com.company</groupId>
    <artifactId>master</artifactId>
    <version>...</version>
    <packaging>pom</packaging>

    <scm>
        <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>

<properties>
     <project.scm.id>bitbucket-scm</project.scm.id>
     <scm.project.name>maven-master</scm.project.name>
     <scm.repository.name>tsu</scm.repository.name>
</properties>
    <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>

https://user:**********@bitbucket.server.de/scm/tsu/maven-master.git refs/heads/dev:refs/heads/dev

对于多模块项目的非工作版本,它使用

https://user:**********@bitbucket.server.de/scm/tsu/project-foo.git/project-foo refs/heads/dev:refs/heads/dev

当将整个SCM部分复制到多模块项目并对其进行修改时,它起作用了。但是,我只想在主POM中插入一个属性,以避免将SCM标记复制到每个项目。

任何解决此问题的帮助都是非常感谢的。

共有1个答案

舒永嘉
2023-03-14

自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>  

您必须在子POM中重新定义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>  
 类似资料:
  • 我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(

  • 我最近尝试使用,因为它显然是Maven宇宙中构建和包发布的推荐方式。 但是我想在Eclipse中使用它,因为我的开发工作流程的其余部分是基于Eclipse的。我通常通过作为Eclipse Juno(4.2)的一部分提供的m2eclipse插件运行Maven命令 当我尝试在 Eclipse 中运行 “release:prepare” 时,我注意到了一些奇怪的事情: 在根项目目录中创建了一些额外的文件

  • 我试图使用目标 release:prepare 生成一个版本,但是当我在 Eclipse 上运行它时,我得到了错误: 无法执行目标org.apache.maven.plugins:maven-estes-plugin:2.0-beta-7:项目mwFramework上的准备(default-cli):无法运行目标清理验证:执行过程中出错。无法运行程序“mvn”(在目录“/home/gnng/Dev

  • 我的计划是建立一个设置,在这个设置中,我可以基于我正在运行的maven目标发布快照和版本。我当前的pom包含以下详细信息- 我的maven settings.xml包含服务器条目- 当我运行命令时 编辑1- 我运行了,部署插件的日志是-

  • 我正在尝试在 Jenkins 中配置以下工作流模式: 构建战争文件 我似乎错过了一些东西。应用程序的组件(jar 文件等)似乎在目标版本/快照目录中很好地部署到 Artifactory 中。然而,最终的WAR神器似乎并没有存储在Artifactory中,尽管Jenkins清楚地指出该神器是成功构建的。 我使用的是标准目标:全新安装。我也尝试过(没有改变):全新安装重新打包 我安装了Jenkins的

  • 我试图释放,但失败了 MVN发布:执行 错误是 部署失败:未在POM inside distributionManagement元素或-DaltDeploymentRepository=id::layout::url参数中指定repository元素 pom。xml 我不明白这个问题。通过部署插件部署到快照存储库工作正常