为了使用 SSH 部署工件,您必须首先在 POM 的distributionManagement元素中指定 SSH 服务器的使用,并在构建元素中指定一个扩展,该扩展将拉入使用 SSH 部署所需的 SSH 工件:
<project>
...
<distributionManagement>
<repository>
<id>ssh-repository</id>
<url>scpexe://repository.mycompany.com/repository</url>
</repository>
</distributionManagement>
<build>
<extensions>
<!-- Enabling the use of SSH -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh-external</artifactId>
<version>1.0-beta-6</version>
</extension>
</extensions>
</build>
..
</project>
如果您从 Unix 部署或安装了 Cygwin,则不需要在settings.xml文件中进行任何其他配置,因为所有内容都将从环境中获取。但是,如果您在 Windows 上使用plink之类的东西,那么您将需要以下内容:
<settings>
...
<servers>
<server>
<id>ssh-repository</id>
<username>your username in the remote system if different from local</username>
<privateKey>/path/to/your/private/key</privateKey> <!-- not needed if using pageant -->
<configuration>
<sshExecutable>plink</sshExecutable>
<scpExecutable>pscp</scpExecutable>
<sshArgs>other arguments you may need</sshArgs>
</configuration>
</server>
</servers>
...
</settings>
当然,在尝试使用 Maven 进行部署之前,您应该确保可以手动登录到指定的 SSH 服务器。一旦您确认一切都设置正确,您现在可以使用 Maven 部署您的工件:
mvn deploy
有时您可能在部署时遇到权限问题,如果是这样,您可以像这样设置文件和目录权限:
<settings>
...
<servers>
<server>
<id>ssh-repository</id>
<!--
|
| Change default file/dir permissions
|
-->
<filePermissions>664</filePermissions>
<directoryPermissions>775</directoryPermissions>
<configuration>
<sshExecutable>plink</sshExecutable>
<scpExecutable>pscp</scpExecutable>
</configuration>
</server>
</servers>
...
</settings>
注意:如果您使用的是 Putty,它会期望私钥是PPK格式而不是标准格式,因此请确保您使用puttygen将您的 openssh 格式密钥转换为PPK格式或生成另一种格式。Windows 用户可以在PuTTY 下载页面上找到 Putty 工具。