Maven 发布插件。无法标记分支

Posted

技术标签:

【中文标题】Maven 发布插件。无法标记分支【英文标题】:Maven release plugin. Can't tag the branch 【发布时间】:2013-10-14 14:28:46 【问题描述】:

我正在使用 maven 发布插件来在 SVN 中标记我的项目。我以以下 Maven 目标运行 Jenkins 工作:

-Pmake-tag release:clean release:prepare -sbuild/deploy-settings.xml -Dresume=false

我的 pom.xml

<profile>
            <id>make-tag</id>
            <modules>
                <module>../common-core</module>
                <module>../htdocs</module>
                <module>../deployer</module>
                <module>../configuration</module>
            </modules>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-release-plugin</artifactId>
                        <version>2.4</version>
                        <configuration>
                            <preparationGoals>validate</preparationGoals>
                        <!--    <tagBase>svn:http://172.16.71.2:8080/repos/DMC/Copyright2/tags/</tagBase>  -->
                            <useEditMode>true</useEditMode>
                            <autoVersionSubmodules>true</autoVersionSubmodules>
                            <updateWorkingCopyVersions>false</updateWorkingCopyVersions>
                            <tagNameFormat>rel-$env.REL_TAG</tagNameFormat>
                            <username>$env.SCM_USER</username>
                            <password>$env.SCM_PASSWD</password>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

<build>
 ...
    <scm>
        <developerConnection>scm:svn:http://<svn_ip>:8080/repos/DMC/Copyright2</developerConnection>
        <connection>scm:svn:http://<svn_ip>:8080/repos/DMC/Copyright2</connection>  
        <url>scm:svn:http://<svn_ip>:8080/repos/DMC/Copyright2</url>
    </scm>
</build>

当我运行 jenkins 作业时出现错误

[INFO] Executing: cmd.exe /X /C "svn --username jenkins --password ***** --no-auth-cache --non-interactive copy --file C:\Windows\TEMP\maven-scm-756812364.commit --revision 51859 http://<svn_ip>:8080/repos/DMC scm:svn:http://<svn_ip>:8080/repos/DMC/MyProject/tags/rel-99346"
[INFO] Working directory: C:\Program Files (x86)\Jenkins\jobs\MyJob\workspace
[JENKINS] Archiving disabled
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Unable to tag SCM
Provider message:
The svn tag command failed.
Command output:
svn: E020024: Error resolving case of 'scm:svn:http:\\<svn_ip>:8080\repos\DMC\MyProject\tags\rel-99346'

尽管日志输出中的所有斜线都是 \ 在 pom.xml url 中设置正确。 很乐意得到帮助。

【问题讨论】:

你能手动运行它吗(在 Jenkins 之外)? 是的。我得到了同样的错误 好的,所以这不是 Jenkins 错误。这是一个 svn 和/或 maven 错误。 .... 或者您的服务器 URL 错误。 网址没问题。我仔细检查了它 您是否使用与提交后挂钩处理的相同工作副本? 【参考方案1】:

命令行以以下内容结尾:scm:svn:http://&lt;svn_ip&gt;:8080/repos/DMC/MyProject/tags/rel-99346。错了:svn.exe 不理解 scm: 前缀,这让 Maven 了解这是什么类型的 String。我看不出这个值来自哪里,也许你可以自己解释一下。 顺便说一句,&lt;scm&gt;&lt;url&gt; 没有 scm: 前缀,它指向一个 webURL

【讨论】:

以上是关于Maven 发布插件。无法标记分支的主要内容,如果未能解决你的问题,请参考以下文章

Maven 发布插件。分支发布失败(+ 缺少分支名称的第一个字母)

maven-release-plugin,是不是可以不使用分支标签标记 pom.xml

Maven 发布插件 Jenkins 不断将 Trunk 复制到 Tag 而不是 Branch

jenkins 从一个分支发布 Maven

maven发布java-分支构建

SVN Mirror 标记的分支历史保存