从 Bamboo 使用 Maven 发布时在 SVN 标签中创建的多余主干子文件夹
Superfluous trunk subfolder created in SVN tag when releasing with Maven from Bamboo
我们已经 运行 讨论过几次这个问题:
标记的文件夹不包含为发布而修改的 t运行k 版本,而是包含任何修改前的 t运行k 的副本,并且还包含 'trunk' 正确修改版本所在的子文件夹。
因此,如果我在发布之前在我的 SVN 仓库中有这个:
- 项目名称
- t运行k(pom.xml 中的版本是 1.0.0-SNAPHOT)
- 标签
正常情况下,我发布1.0.0版本后会有以下内容:
- 项目名称
- t运行k(pom.xml 中的版本是 1.1.0-SNAPSHOT)
- 标签
- 1.0.0(pom.xml 中的版本为 1.0.0)
然而,很少有几次,我最终得到了:
- 项目名称
- t运行k(pom.xml 中的版本是 1.1.0-SNAPSHOT)
- 标签
- 1.0.0(pom.xml 中的版本是 1.0.0-SNAPSHOT)
- t运行k(pom.xml 中的版本是 1.0.0)
发布前 pom.xml 中的 'scm' 标签似乎是正确的,所以我不认为是否来自那里:
<scm>
<url>http://.../projectName/trunk</url>
<connection>scm:svn:http://.../projectName/trunk</connection>
<developerConnection>scm:svn:http://.../projectName/trunk</developerConnection>
</scm>
我的 Bamboo 计划由以下任务组成:
- 源代码检出(使用强制清理构建)
- 脚本(确定发布版本)
- Maven 3.x(实际发布)
我的 Maven 3.x 任务有以下目标:
--batch-mode -Dusername=${bamboo.username} -Dpassword=${bamboo.password} -Dtag=${bamboo.version} release:prepare -DreleaseVersion=${bamboo.version} -DdevelopmentVersion=${bamboo.nextVersion}-SNAPSHOT -Dresume=false release:perform
插件没有选项:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
查看日志,未见异常,无法确定原因。
[LOG] Checking in modified POMs...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive commit --file .../temp/PROJECT-PLAN-JOB/maven-scm-386932260.commit --targets .../temp/PROJECT-PLAN-JOB/maven-scm-7155492065832691877-targets
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Tagging release with the label 1.0.0...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive copy --file .../temp/PROJECT-PLAN-JOB/maven-scm-80256020.commit --revision 46345 http://.../projectName/trunk http://.../projectName/tags/1.0.0
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Transforming 'projectName'...
[LOG] Not removing release POMs
[LOG] Checking in modified POMs...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive commit --file .../temp/PROJECT-PLAN-JOB/maven-scm-1254735614.commit --targets .../temp/PROJECT-PLAN-JOB/maven-scm-2179675177497779390-targets
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Release preparation complete.
[LOG]
[LOG] --- maven-release-plugin:2.4.1:perform (default-cli) @ projectName ---
[LOG] Checking out the project to perform the release ...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB/target && svn --username user --password '*****' --no-auth-cache --non-interactive checkout http://.../projectName/tags/1.0.0 .../build-dir/PROJECT-PLAN-JOB/target/checkout
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB/target
[LOG] Invoking perform goals in directory .../build-dir/PROJECT-PLAN-JOB/target/checkout
[LOG] Executing goals 'deploy'...
从日志中看到,执行是:
- 修改 pom 中的版本以删除 -SNAPSHOT (1.0.0)
- 这个 pom 在 t运行k
中提交
- t运行k的内容复制到标签1.0.0
- pom中的版本修改为下一个版本(1.1.0-SNAPSHOT)
- 这个 pom 在 t运行k
中提交
- 标签1.0.0的内容在文件夹/target/checkout/
中签出
- 发布于 /target/checkout/
知道为什么 SVN 存储库中的 1.0.0 标记文件夹包含另一个 'trunk' 子文件夹吗?
经查,是maven-release-plugin的问题,与Bamboo无关。事实上,一旦你尝试发布一个已经发布的版本,就会发生这种情况。
这是插件的 "normal" 行为。
我们已经 运行 讨论过几次这个问题:
标记的文件夹不包含为发布而修改的 t运行k 版本,而是包含任何修改前的 t运行k 的副本,并且还包含 'trunk' 正确修改版本所在的子文件夹。
因此,如果我在发布之前在我的 SVN 仓库中有这个:
- 项目名称
- t运行k(pom.xml 中的版本是 1.0.0-SNAPHOT)
- 标签
正常情况下,我发布1.0.0版本后会有以下内容:
- 项目名称
- t运行k(pom.xml 中的版本是 1.1.0-SNAPSHOT)
- 标签
- 1.0.0(pom.xml 中的版本为 1.0.0)
然而,很少有几次,我最终得到了:
- 项目名称
- t运行k(pom.xml 中的版本是 1.1.0-SNAPSHOT)
- 标签
- 1.0.0(pom.xml 中的版本是 1.0.0-SNAPSHOT)
- t运行k(pom.xml 中的版本是 1.0.0)
- 1.0.0(pom.xml 中的版本是 1.0.0-SNAPSHOT)
发布前 pom.xml 中的 'scm' 标签似乎是正确的,所以我不认为是否来自那里:
<scm>
<url>http://.../projectName/trunk</url>
<connection>scm:svn:http://.../projectName/trunk</connection>
<developerConnection>scm:svn:http://.../projectName/trunk</developerConnection>
</scm>
我的 Bamboo 计划由以下任务组成:
- 源代码检出(使用强制清理构建)
- 脚本(确定发布版本)
- Maven 3.x(实际发布)
我的 Maven 3.x 任务有以下目标:
--batch-mode -Dusername=${bamboo.username} -Dpassword=${bamboo.password} -Dtag=${bamboo.version} release:prepare -DreleaseVersion=${bamboo.version} -DdevelopmentVersion=${bamboo.nextVersion}-SNAPSHOT -Dresume=false release:perform
插件没有选项:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
查看日志,未见异常,无法确定原因。
[LOG] Checking in modified POMs...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive commit --file .../temp/PROJECT-PLAN-JOB/maven-scm-386932260.commit --targets .../temp/PROJECT-PLAN-JOB/maven-scm-7155492065832691877-targets
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Tagging release with the label 1.0.0...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive copy --file .../temp/PROJECT-PLAN-JOB/maven-scm-80256020.commit --revision 46345 http://.../projectName/trunk http://.../projectName/tags/1.0.0
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Transforming 'projectName'...
[LOG] Not removing release POMs
[LOG] Checking in modified POMs...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB && svn --username user --password '*****' --no-auth-cache --non-interactive commit --file .../temp/PROJECT-PLAN-JOB/maven-scm-1254735614.commit --targets .../temp/PROJECT-PLAN-JOB/maven-scm-2179675177497779390-targets
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB
[LOG] Release preparation complete.
[LOG]
[LOG] --- maven-release-plugin:2.4.1:perform (default-cli) @ projectName ---
[LOG] Checking out the project to perform the release ...
[LOG] Executing: /bin/sh -c cd .../build-dir/PROJECT-PLAN-JOB/target && svn --username user --password '*****' --no-auth-cache --non-interactive checkout http://.../projectName/tags/1.0.0 .../build-dir/PROJECT-PLAN-JOB/target/checkout
[LOG] Working directory: .../build-dir/PROJECT-PLAN-JOB/target
[LOG] Invoking perform goals in directory .../build-dir/PROJECT-PLAN-JOB/target/checkout
[LOG] Executing goals 'deploy'...
从日志中看到,执行是:
- 修改 pom 中的版本以删除 -SNAPSHOT (1.0.0)
- 这个 pom 在 t运行k 中提交
- t运行k的内容复制到标签1.0.0
- pom中的版本修改为下一个版本(1.1.0-SNAPSHOT)
- 这个 pom 在 t运行k 中提交
- 标签1.0.0的内容在文件夹/target/checkout/ 中签出
- 发布于 /target/checkout/
知道为什么 SVN 存储库中的 1.0.0 标记文件夹包含另一个 'trunk' 子文件夹吗?
经查,是maven-release-plugin的问题,与Bamboo无关。事实上,一旦你尝试发布一个已经发布的版本,就会发生这种情况。
这是插件的 "normal" 行为。