我正在使用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的整个命令。
答案 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.xmlrelease-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