2015-04-14 56 views
0

我使用的是maven-release-plugin:2.5.1。我需要將其配置爲使用公鑰/私鑰身份驗證連接到SVN。在嘗試與SVN進行SSH連接時,我在配置中使用正確的用戶名時遇到問題。未使用配置用戶名的Maven發行版插件

我的部署-settings.xml中<server>配置是這樣的:

<server> 
    <id>my.server.org</id> 
  <username>[XXXX]</username> 
  <privateKey>/home/[YYYY]/.ssh/id_rsa</privateKey> 
</server> 

我的pom.xml <scm>的配置是這樣的:

scm:svn:svn+ssh://my.server.org/data1/svns_zzzz/zzzz/path/to/the/project/trunk 

mvn命令行的樣子:

--batch-mode release:clean release:prepare release:perform 
-s /home/[YYYY]/.m2/deploy-settings.xml 
-Dsettings.security=/home/[YYYY]/.m2/master-settings.xml 

當我嘗試上述配置失敗。它無法將修改後的POM文件提交給SVN。爲了幫助調試這個問題,我設置以下的環境變量:

SVN_SSH="ssh -vvv" 

當我這樣做,我在調試語句與比<server>標籤定義的[XXXX]名以外的用戶名太多的驗證失敗看見。

於是我試着在命令行中指定的用戶名:

--batch-mode -Dusername=[XXXX] release:clean release:prepare release:perform... 

這沒有奏效。

於是我試圖在POM來指定用戶名:

scm:svn:svn+ssh://[XXXX]@my.server.org/data1/svns_zzzz/zzzz/path/to/the/project/trunk 

這也不能工作。

調試驗證我的[XXXX]用戶名和/home/[YYYY]/.ssh/id_rsa關鍵事實上做的工作,我將他們加入到環境變量:

SVN_SSH="ssh -vvv -l [XXXX] -i /home/[YYYY]/.ssh/id_rsa" 

設置這樣的環境變量後,它的工作。發佈插件能夠成功地將修改後的POM文件提交給SVN。所以我知道用戶名和密碼的工作。

所以現在問題是我的Maven配置有什麼問題?設置SVN_SSH環境變量有助於診斷問題,並提供解決方法,但我不想將其作爲長期解決方案。

有什麼想法?

+0

[documentation](http://maven.apache.org/maven-release/maven-release-plugin/faq.html#credentials)表示您需要添加屬性'project.scm.id'包含您的''配置的'id'。你嘗試過嗎? –

+0

感謝您的評論。不幸的是,這並沒有奏效。 –

回答

0

發佈插件會分叉構建版本,並且不會將您在命令行上提供的參數默認傳遞給分支進程。嘗試添加:-Darguments="-s /home/[YYYY]/.m2/deploy-settings.xml -Dsettings.security=/home/[YYYY]/.m2/master-settings.xml"(注意雙引號)到當前命令行。這應該將更改傳遞給分叉進程。

+0

我確實需要使用「-Darguements = xxxxx」才能將這些值傳遞給分叉進程。但是,如果我在此參數列表中添加了-Dusername = [XXXX],SCM進程在嘗試與Subversion進行SSH通信時仍然沒有使用此用戶名。 –

+0

如果服務器的用戶名在settings.xml服務器元素中,則不必在命令行中指定它。添加@StefanFerstl提到的'project.scm.id'屬性,以便發佈插件找到正確的服務器元素:' my.server.org'。 – user944849

+0

兩人都試過了,很不幸仍然沒有工作。 –