我正在使用release-plugin通过Temcity进行准备发布 我得到了以下错误
[10:46:19][Step 2/3] [INFO] Executing: /bin/sh -c cd
/home/tcagent/buildAgent/work/860f91e0ad4abff2 && git push
https://username:****@testurl.com:8081/scm/myrepo/my-project-name.git/**buildConfName**
refs/heads/release/release-name:refs/heads/release/release-name
[10:46:19][Step 2/3] [INFO] Working directory:
/home/tcagent/buildAgent/work/860f91e0ad4abff2
[Step 2/3] Failed to execute goal
org.apache.maven.plugins:maven-release-plugin:2.5.3:prepare
(default-cli) on project **my-project-name**: Unable to commit files
Provider message: The git-push command failed. Command output: fatal:
remote error: Repository not found The requested repository does not
exist, or you do not have permission to access it.
我的父母pom低于SCM详细信息
<scm>
<connection>scm:git:https://testurl.com:8081/scm/myrepo/${env.TEAMCITY_BUILDCONF_NAME}.git</connection>
<developerConnection>scm:git:https://testurl.com:8081/scm/myrepo/${env.TEAMCITY_BUILDCONF_NAME}.git</developerConnection>
<tag>1.0.0</tag>
</scm>
我保留了我的bit-bucket存储库名称,buildConfName和artifact id。当我构建父项目时它运行成功,但是当我运行试图构建子模块时,我看到buildConfName被自动附加到在父POM中配置的SCM URL
有人可以告诉为什么要添加额外的项目名称吗?
由于
答案 0 :(得分:0)
经过一整天的努力后,我发现了以下发现
我在所有其他项目中使用父pom来放置常见属性,常见构建步骤,常见依赖版本和SCM详细信息,因为所有项目都有点依赖关系,而实际上并不是模块化项目。所以在子pom maven中将工件id附加到scm连接url中,这在模块化项目方面是正确的行为。
而在git中,我的项目为每个模块都有单独的存储库,而不是父项目的子目录。这会导致构建失败,因为由于错误的URL形成而找不到存储库。
所以我使用环境驱动的属性来配置scm连接URL,如下所示。
父pom.xml中的更改如下所示
<profiles>
<profile>
<id>parent</id>
<activation>
<property>
<name>scmModule</name>
<value>parent</value>
</property>
</activation>
<properties>
<scmConnection>scm:git:https://testurl.com:8081/scm/**myrepo/my-parent.git**</scmConnection>
<scmDeveloperConnection>scm:git:https://testurl.com:8081/scm/myrepo**/my-parent.git**</scmDeveloperConnection>
</properties>
</profile>
<profile>
<id>child</id>
<activation>
<property>
<name>scmModule</name>
<value>child</value>
</property>
</activation>
<properties>
<scmConnection>scm:git:https://testurl.com:8081/scm/**myrepo/**</scmConnection>
<scmDeveloperConnection>scm:git:https://testurl.com:8081/scm/**myrepo/**</scmDeveloperConnection>
</properties>
</profile>
</profiles>
<scm>
<connection>${scmConnection}</connection>
<developerConnection>${scmDeveloperConnection}</developerConnection>
<tag>1.0.0</tag>
</scm>
在运行构建时,我使用下面的命令
用于构建父项目
mvn release:prepare -DscmModule=parent
用于构建子项目/模块
mvn release:prepare -DscmModule=child
这解决了我的问题,就像子模块一样,maven开始追加工件ID并形成了正确的网址