我正在嘗試通過Maven發佈插件進行發佈,並遇到與SCM配置有關的問題。我使用安裝了m2eclipse的Eclipse。我們使用Mercurial並在我的機器上(Win7)安裝了TortoiseHg。我有一個創建jar的測試項目。我們爲我們的項目利用超級pom,所以測試項目pom也是如此。我已經建立了這個在超級POM:使用Maven/Hudson/Mercurial進行發佈
<build>
<plugins>
....
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin
<version>1.6</version>
<configuration>
<connectionType>connection</connectionType>
</configuration>
</plugin>
</plugins>
</build>
我的測試項目POM看起來是這樣的:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>my.group</groupId>
<artifactId>TestJar
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>my.group</groupId>
<artifactId>super-pom</artifactId>
<version>1.0</version>
</parent>
<scm>
<connection>
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
</connection>
<developerConnection>
scm:hg:ssh://our.scm.server:22//path/to/TestJarProject
</developerConnection>
</scm>
</project>
請注意,我們ssh到我們的SCM服務器。我懷疑我遇到的一些問題與此有關。我只能找到使用http的示例。
在我的settings.xml文件,我添加了這個:
<servers>
...
<server>
<id>our.scm.server</id>
<username>username</username>
<password>password</password>
</server>
</servers>
當我運行版本:準備發佈:執行,一個對話的TortoisePlink彈出提示我輸入密碼。該對話框詢問「@ our.scm.server的密碼」。
它似乎沒有使用settings.xml文件中的用戶名或密碼,這正是我期望通過向其添加服務器元素來實現的。它應該是?我也嘗試添加我的用戶名連接url:
<connection>
scm:hg:ssh://[email protected]:22//path/to/TestJarProject
</connection>
但我仍然提示輸入一個空的用戶名密碼。
問題一
有沒有人成功地使用ssh連接到水銀,而這樣做的Maven發行版?
因爲我最終想要做的建立在哈德森,我成立了一個哈德森工作做的釋放,但它失敗,此錯誤:
[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s)
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\
LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\
maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \
prepare the release because you have local modifications :
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown]
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown]
... many, many more lines of this nature .....
問題二
什麼地方修改Maven遇到?
由於該項目正在從回購中拉出,我所能想到的唯一更改就是對pom文件的更新(從版本中刪除SNAPSHOT)。但Maven不應該因爲它自己做出改變而抱怨,不是嗎?
UPDATE
按khmarbaise的建議,我已經添加到了我的父POM:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.2</version>
</plugin>
</plugins>
</pluginManagement>
首先在你父母的地方做一個pluginManagement部分,並配置一個更新版本的maven-release-plugin,因爲你使用的是2.0,這有點過時了......你使用哪個Maven版本?哈德森是最新的?使用Hudson的發佈插件? – khmarbaise
我們使用Hudson 2.1.2和Maven 3(與Hudson捆綁在一起) – sdoca
您是否首先檢查了是否可以在沒有Hudson的情況下在命令行上發佈一個版本? (添加插件管理部分?) – khmarbaise