簡體   English   中英

當我使用maven-release-plugin釋放分支時,為什么它嘗試從修訂版0創建分支?

[英]When I use the maven-release-plugin to release a branch, why does it try to create the branch from revision 0?

我正在使用maven-release-plugin。 我正在嘗試釋放一個分支,並且在嘗試執行此命令時失敗:

cmd.exe /X /C "svn --non-interactive copy --file C:\Users\USER~1\AppData\Local\Temp\maven-scm-711744598.commit --parents --revision 0 https://domain/svn/app/branches/2.4.8.x https://domain/svn/app/tags/App-2.4.8.1"

它給出了這個錯誤:

svn: E195012: Unable to find repository location for 'https://domain/svn/app/branches/2.4.8.x' in revision 0

我認為這是在准備目標中發生的,因為如果失敗,它會說:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare

我問了一個svn專家,他說:

等待,為什么要嘗試從r0復制內容? 根據定義,r0中沒有任何內容。 r0始終是一個空的存儲庫,第一個對象添加到r1中。 這就是為什么它失敗了。 問題是為什么Maven嘗試過。 如果為“ svn copy”提供修訂版本參數,則您創建的分支/標記將基於您指定的修訂版本中的源,因此源必須存在於該修訂版本中(如果未指定,則會得到HEAD,即,最新版本)...至此,我對maven或其插件一無所知

那么為什么Maven試圖從修訂版0復制? 這是我運行的maven命令:

mvn --batch-mode release:prepare release:perform

我的根pom具有如下定義的maven-release-plugin:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <developmentVersion>2.4.8.2-SNAPSHOT</developmentVersion>
                <releaseVersion>2.4.8.1</releaseVersion>
                <branchBase>https://domain/svn/app/branches</branchBase>
                <tagBase>https://domain/svn/app/tags</tagBase>
            </configuration>
        </plugin>

另外,我的scm標簽看起來像這樣:

<scm>
    <connection>scm:svn:https://domain/svn/app/branches/2.4.8.x</connection>
</scm>

我的svn版本是1.8.5(r1542147)

只是想添加此最新答案,以解決是否有人遇到相同問題並且注釋中的解決方案不起作用的問題。
在多模塊應用程序中,我們遇到了相同的問題,只有父POM帶有SCM標簽(在其他應用程序中效果很好)。 我們遇到了相同的錯誤,但是可以通過向每個子POM中添加相應的SCM標簽來解決。 我們從來沒有發現這是為什么...

我也有這個問題。 在受影響的項目中,我在驗證階段進行了自定義搜索並替換了一些文件,我想在標記之前檢查對Svn所做的更改,因此添加了如下自定義檢查操作:

        <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <preparationGoals>clean verify scm:checkin -Dmessage="perform release"</preparationGoals>
            </configuration>
        </plugin>

結果是,當發布插件嘗試檢入pom文件中的更改時,由於自定義操作已經提交了更改,因此沒有更改。 從而導致此錯誤。

我在自定義scm:checkin中添加了一個“包含”文件列表,該列表僅包含我一直在篡改的文件,這為我解決了問題。

產生的配置如下所示:

        <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <preparationGoals>clean verify scm:checkin -Dmessage="perform release" -Dincludes="TwogWebUtilsGrailsPlugin.groovy,plugin.xml" -DconnectionType="connection"</preparationGoals>
            </configuration>
        </plugin>

我執行自定義替換操作的原因是因為該項目是Grails插件,並且我遵循了此博客文章中的指南。

最新編輯:升級到maven 3.2后,此解決方案似乎無法使用。 我回到了起點。

正如我在上面的評論中所說:

我清理了一切,然后運行了release:自己准備,它成功了,沒有任何問題。 也許這是一起運行release:prepare和release:perform會導致此錯誤的錯誤。

自從單獨運行這些命令以來,我還沒有遇到這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM