在外部SSH命令中部署

为了使用SSH部署artifact,必须首先在pom的 distributionManagement 元素中指定使用的 SSH 服务器,并在 build 元素中指定 extension:

  1. <project>
  2. ...
  3. <distributionManagement>
  4. <repository>
  5. <id>ssh-repository</id>
  6. <url>scpexe://repository.mycompany.com/repository</url>
  7. </repository>
  8. </distributionManagement>
  9. <build>
  10. <extensions>
  11. <!-- Enabling the use of SSH -->
  12. <extension>
  13. <groupId>org.apache.maven.wagon</groupId>
  14. <artifactId>wagon-ssh-external</artifactId>
  15. <version>1.0-beta-6</version>
  16. </extension>
  17. </extensions>
  18. </build>
  19. ..
  20. </project>

如果从Unix或者有已安装的 Cygwin 中部署,不需要在 settings.xml 中有任何额外的配置,因为所有东西都将从环境中获取。但是如果在windows上并使用类似plink,将需要下面的设置:

  1. <settings>
  2. ...
  3. <servers>
  4. <server>
  5. <id>ssh-repository</id>
  6. <username>your username in the remote system if different from local</username>
  7. <privateKey>/path/to/your/private/key</privateKey> <!-- not needed if using pageant -->
  8. <configuration>
  9. <sshExecutable>plink</sshExecutable>
  10. <scpExecutable>pscp</scpExecutable>
  11. <sshArgs>other arguments you may need</sshArgs>
  12. </configuration>
  13. </server>
  14. </servers>
  15. ...
  16. </settings>

在使用maven部署之前确保可以手工登录给定的 SSH 服务器。一旦确认所有的事情都正确搭建,可以使用maven来部署artifact:

  1. mvn deploy

有时可能在部署时有遇到权限问题,如果是这样,可以像这样设置文件和目录权限:

  1. <settings>
  2. ...
  3. <servers>
  4. <server>
  5. <id>ssh-repository</id>
  6. <!--
  7. |
  8. | Change default file/dir permissions
  9. |
  10. -->
  11. <filePermissions>664</filePermissions>
  12. <directoryPermissions>775</directoryPermissions>
  13. <configuration>
  14. <sshExecutable>plink</sshExecutable>
  15. <scpExecutable>pscp</scpExecutable>
  16. </configuration>
  17. </server>
  18. </servers>
  19. ...
  20. </settings>