10

鉴于关于 scp/ssh 和 maven 的文档非常差,我尝试了不同的方法,基本上分为两大类:使用 scpexe wagon 和 scp wagon。通常它们在 linux 和 mac 上都可以正常工作,但在 windows 上我从来没有找到让它在所有机器上工作的方法。

scpexe 方法(安装完整的腻子并添加到路径后) - settings.xml 配置:

<server>
    <id>internal</id>
    <username>******</username>
    <password>*******</password>
    <configuration>
        <sshExecutable>plink</sshExecutable>
        <scpExecutable>pscp</scpExecutable>
    </configuration>
</server>

scp 方法 - settings.xml :

 <server>
      <id>internal</id>
      <username>*********</username>
      <password>*********</password>
      <configuration>
           <StrictHostKeyChecking>ask</StrictHostKeyChecking>
      </configuration>
 </server>

我还尝试将 StrictHostKeyChecking 设置为“否”,但是,除了安全风险之外,它在特定机器上不起作用。

是否有人找到了在所有机器上一致地使用内部 ssh 存储库的方法?

4

1 回答 1

11

Maven SSH wagon使用 JSch,这是 SSH 的纯 Java 实现,无论操作系统如何都能正常工作。(也许最初发布此问题时并非如此,但现在确实如此。)部署插件文档仍然有一个名为Deployment of artifacts in an external SSH command的指南,但不再需要这种方法。

这是一个示例配置,我成功地使用它从带有 Maven 3.0.4 的 Windows 7 系统通过 SCP 部署到 Linux 机器。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>hello</groupId>
  <artifactId>hello</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>

  <name>Hello</name>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.3</version>
      </extension>
    </extensions>
  </build>

  <distributionManagement>
    <repository>
      <id>my-ssh-repo</id>
      <url>scp://my.server.url/path/to/ssh-repo</url>
    </repository>
  </distributionManagement>

</project>

settings.xml

<settings>
  <servers>
    <server>
      <id>my-ssh-repo</id>
      <username>myUser</username>
      <password>myPass</password>
    </server>
  </servers>
</settings>
于 2013-01-18T18:10:22.550 回答