不能将git的标签推送到远程作为maven发布过程

时间:2016-05-22 22:56:35

标签: java git maven jenkins maven-release-plugin

我正在使用maven发布插件,以便能够使用jenkins'发布插件。我正在使用在linux系统上运行它的多模块项目(centos)。 因为我已经将以下插件配置添加到父pom:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
     <version>2.5.3</version>
     <configuration>
        <tagNameFormat>v@{project.version}</tagNameFormat>
        <arguments>-Dmaven.test.skip=true -DskipTests -Dbatch=true</arguments>
        <tagBase>http://gitcore/user/app/tags</tagBase>
     </configuration>
</plugin>

也添加到此pom.xml这些行的顶部:

<scm>
   <connection>scm:git:git@gitcore:user/app.git</connection>
  <developerConnection>scm:git:git@gitcore:user/app.git</developerConnection>
   <url>http://gitcore.company.local/</url>
</scm>

之后我运行以下maven命令: mvn -B release:clean release:prepare release:perform

准备成功通过 它还将pom版本及其模块(子项目)的推广推向git起源。 它只创建具有正确版本的本地git标签,但没有成功推送到远程。 在使用-X运行maven之后我得到的是:

org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.apache.maven.plugins:maven-release-plugin:2.5.3:在项目projectParent上准备(default-cli):无法标记SCM 提供者留言: git-push命令失败。 命令输出: 拒绝访问。 致命的:无法从远程存储库读取。

请确保您拥有正确的访问权限并且存储库已存在。

在这些行之上,我注意到以下与推送git标签相关的内容:

[INFO] Executing: /bin/sh -c cd /home/mickey/App/ProjectParent && git push git@gitcore:user/app.git refs/heads/release_version_8_0:refs/heads/release_version_8_0
[INFO] Working directory: /home/mickey/App/ProjectParent
[INFO] Tagging release with the label v8.0.2...
[DEBUG] ScmTagPhase :: scmTagParameters remotingTag true
[DEBUG] ScmTagPhase :: scmTagParameters scmRevision null
[DEBUG] ScmTagPhase :: fileSet  basedir = /home/mickey/App; files = []
[INFO] Executing: /bin/sh -c cd /home/mickey/App && git tag -F /tmp/maven-scm-876857130.commit v8.0.2
[INFO] Working directory: /home/mickey/App
[INFO] Executing: /bin/sh -c cd /home/mickey/App && git push **git@gitcore:user** refs/tags/v8.0.2
[INFO] Working directory: /home/mickey/App

我试图在本地运行最后一次推送( git push git @ gitcore:user ),我从maven运行时遇到了同样的错误,但在我添加到push命令之后也是它运作的文件。我无法理解为什么它不会像我放入pom那样运行整个标记路径的git push的整个命令。

1 个答案:

答案 0 :(得分:1)

我有类似的问题,但我使用的是平面目录多模块,如:

release-workspace\
|
|--release-parent
|    |+pom.xml (modules: ../release-module1, ../release-module2)
|--release-module1
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--release-module2
|    |+pom.xml (parent: ../release-parent/pom.xml)

版本2.x不支持平面目录多模块。你可以在这里查看https://issues.apache.org/jira/browse/MRELEASE-261

作为一种变通方法,您可以在根目录

中创建一个pom.xml
release-workspace\
|
|--release-parent
|    |+pom.xml (parent: ../pom.xml, modules: ../release-module1, ../release-module2)
|--release-module1
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--release-module2
|    |+pom.xml (parent: ../release-parent/pom.xml)
|--pom.xml (modules: release-parent) <-- maven-release-plugin goes