2010-05-09 68 views
10

我使用SSH將我的Java構件部署到服務器。我設置了密鑰,這樣我就可以交互地SSH連接服務器而不需要密碼,但是當我嘗試運行「mvn deploy」或「mvn release:perform」命令時,它掛起(我認爲是密碼提示)。Maven不會使用公鑰部署

我的~/.m2/settings.xml文件包含服務器的用戶名(因爲它與我的本地用戶名不同),並引用需要不同用戶的服務器的id

回答

8

您確定您的settings.xml提供了所需的一切嗎?你是否聲明你的privateKey(如果有必要,還有passphrase)?例如:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
         http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    ... 
    <servers> 
    <server> 
     <id>server001</id> 
     <username>my_login</username> 
     <privateKey>${user.home}/.ssh/id_dsa</privateKey> 
     <passphrase>some_passphrase</passphrase> <!-- if required --> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
     <configuration></configuration> 
    </server> 
    </servers> 
    ... 
</settings> 
+0

我需要元素。這非常令人失望!爲什麼它不像mvn那樣從我的Ubuntu keychain中讀取密碼? – magneticMonster 2010-05-09 02:03:51

5

在您的distributionManagement部分中,請嘗試在您的url中使用「scpexe://」而不是「scp://」。

這調用了標準的scp程序(假設它在你的路徑上),而不是使用Maven內置的scp的Java實現。標準scp使用ssh-agent(在Ubuntu中,當你通過GDM登錄時自動啓動)用於公鑰驗證。

+1

在這種情況下,您還需要使用'wagon-ssh-external'。 – 2012-09-04 20:02:49