更新我檢舉此問題被關閉,因爲似乎沒有解決 - 插件根本就沒有表現,因爲它應該,沒有人似乎知道爲什麼。我已經結束了寫一個小程序,手動複製發佈插件自己的期望的行爲,使用其他插件,如scm
和versions
。如果你想了解我是如何做到的,請隨時給我發電子郵件。Maven的版本:執行覆蓋首次發佈,以後每發佈
我最近把我的項目移到了maven。但是,我在發佈過程中遇到問題。
我的釋放過程如下:
mvn scm:checkout -DconnectionUrl=scm:svn:https://my-server/svn/my-project/trunk -DcheckoutDirectory=my-project
cd my-project
mvn --batch-mode release:prepare
mvn release:perform
我開始1.0.0-SNAPSHOT
,我運行上面所示的釋放過程。這將更新我的回購以下(升序新奇):如預期,包括pom.xml
更新指向1.0.1-SNAPSHOT
和一個名爲my-project-1.0.0
在我SCM創建標籤時
1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
一切。然而,當我再次運行程序,下面出現在我的回購:
1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.0
1.0.2-SNAPSHOT
也就是說,釋放,從未創建1.0.1,而是1.0.1-SNAPSHOT被釋放到1.0.0。需要注意的是所有其他方面運行正常 - 在pom.xml
現在指向1.0.2-SNAPSHOT
,並在我的SCM名爲my-project-1.0.1
創建一個標籤。
事實上,我每次運行的釋放過程中,快照增加,但釋放被寫入到1.0.0與不創建一個新的版本。例如,重新運行釋放過程3進一步倍結果如下:
1.0.0-SNAPSHOT
1.0.1-SNAPSHOT
1.0.2-SNAPSHOT
1.0.3-SNAPSHOT
1.0.4-SNAPSHOT
1.0.0
1.0.5-SNAPSHOT
用於上述預期的行爲是:
1.0.0-SNAPSHOT
1.0.0
1.0.1-SNAPSHOT
1.0.1
1.0.2-SNAPSHOT
1.0.2
1.0.3-SNAPSHOT
1.0.3
1.0.4-SNAPSHOT
1.0.4
1.0.5-SNAPSHOT
的pom.xml
爲第一個版本如下所示:下面
<project xmlns="http://maven.apache.org/POM/4.0.0" x mlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo</groupId>
<artifactId>my-project</artifactId>
<packaging>jar</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>my-project</name>
<distributionManagement>
<repository>
<id>my-server</id>
<url>file://\\my-server\repo\</url>
</repository>
</distributionManagement>
<scm>
<developerConnection>scm:svn:https://my-server/svn/my-project</developerConnection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>my-server</id>
<url>file://\\my-server\repo\</url>
</repository>
</repositories>
</project>
答案之一建議我應該創建一個單獨的release
和snapshot
回購,我卻沒有。這是否會導致問題?
請注意,我用的詹金斯每當代碼致力於自動調用mvn deploy
。然而這也正是作爲預期(取版本承諾pom.xml
被指定爲回購協議,即部署),所以我懷疑這是問題的一部分。
非常感謝您的任何幫助。
更新
檢查從mvn release:perform
命令我看到下面的輸出:
Checking out the project to perform the release ...
Executing: cmd.exe /X /C "svn --non-interactive checkout https://my-server/svn/my-project/tags/my-project-1.0.2 c:\localrelease\mvn\my-project\target\checkout"
Working directory: c:\localrelease\mvn\my-project\target
Invoking perform goals in directory c:\localrelease\mvn\my-project\target\checkout\tags\my-project-1.0.0\trunk
Executing goals 'deploy'...
而且有它每次釋放到1.0.0
的原因 - 它檢查出來的更新標籤,但在舊標籤1.0.0
上發佈(即使1.0.1
標籤存在於目標/檢出文件夾中)。它爲什麼這樣做?
更新2
我已經分裂到2個獨立的存儲庫(一個快照和一個目標),而此問題仍然出現。
另外,我在調查日誌release:perform
時注意到了一些事情:標籤my-project-1.0.1
的結帳包含1.0.0
的標籤。同樣,標籤1.0.2
的結帳包含標籤1.0.0
和1.0.1
等。這是正確的行爲嗎?
或許釋放過程中總是在尋找什麼的它檢查出來,並使用第一個找到,這將永遠是1.0.0
每一個版本除了的第一個版本標籤的文件夾。
這似乎是一個非常奇怪的解釋,但它是迄今爲止我所見到的行爲中唯一的一個。現在的問題是,我錯誤地在我的pom.xml
中配置了什麼,導致這種情況發生?
另一個注意事項:執行釋放時,部署目標投訴'build.plugins.plugin.version' for org.apache.maven.plugins:maven-xxxx-plugin is missing.
對於maven-javadoc-plugin
,maven-deploy-plugin
和maven-source-plugin
。我需要明確添加這些嗎?
謝謝你的迴應。我可能在我的問題中解釋得很差,但我確實瞭解應該發生的週期。也許這是由於不正確的設置(我今天將從一張乾淨的紙上進行測試),但問題似乎是'release:perform'總是寫入1.0.1。目前我在1.0.7-SNAPSHOT上;當我運行釋放過程時,它移動到1.0.8-SNAPSHOT,但隨後'釋放'到1.0.1,而不是1.0.7。每次我運行'release:perform'時,它都會覆蓋第一個發行版。初始回購設置中的某些錯誤是否會導致此問題? –
我嘗試了一個完全和新的項目(雖然仍然只有一個存儲庫),並再次出現同樣的問題。從'1.0.0-SNAPSHOT'開始,我運行釋放過程並將1.0.0發佈到回購站,將標籤'my-project-1.0.0'添加到SCM和'1.0.1-SNAPSHOT'在回購中創建(並且更新了poms)。當我再次運行釋放過程時,將標記'my-project-1.0.1'添加到SCM,將'1.0.2-SNAPSHOT'添加到回購中,但釋放'1.0.1'從不出現在回購中 - 相反'1.0.0'被覆蓋。任何想法是什麼造成這種情況?單個存儲庫是否是問題? –
這不可能。你可以把這個完整的項目推到Github上,或者在github上做一個主題,所以我可以看看它。 – khmarbaise