Java 有没有办法让maven scp马车在linux/mac/windows平台上始终如一地工作?

Java 有没有办法让maven scp马车在linux/mac/windows平台上始终如一地工作?,java,maven,ssh,scp,jsch,Java,Maven,Ssh,Scp,Jsch,考虑到关于scp/ssh和maven的文档非常糟糕,我尝试了不同的方法,基本上分为两大类:使用scpexe旅行车和scp旅行车。通常,它们在linux和mac上都可以正常工作,但在windows上,我从来没有找到一种方法让它在所有机器上都可以工作 scpexe方法(安装完整的putty并添加到路径后)-settings.xml配置: <server> <id>internal</id> <username>******</us

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

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

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

内部的
******
*******
普林克
pscp
scp方法-settings.xml:

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

内部的
*********
*********
问
我还试着将KeyChecking设置为“否”,但撇开安全风险不谈,在特定的机器上不起作用

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

使用JSch,这是ssh的纯Java实现,无论操作系统如何都可以工作。(这个问题最初发布时可能不是这样,但现在是真的。)文档中仍然有一个名为的指南,但这种方法不再必要

下面是一个示例配置,我成功地使用它通过SCP从带有Maven 3.0.4的Windows 7系统部署到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>
  <servers>
    <server>
      <id>my-ssh-repo</id>
      <username>myUser</username>
      <password>myPass</password>
    </server>
  </servers>
</settings>

谢谢我无法尝试,因为我不再参与那个项目(而且我们从maven搬到了ant+ivy!)在某个地方我读到了
scpexe://
,在url中将选择
sshExecutable
而不是JSch。但这在1.0-beta4和ssh 1.0版的版本中不再有效。我想使用plink/pscp,这样我就可以使用Peagent加载的公钥,但找不到让maven使用它的方法。相反,我最终将.ppk导出为openssh格式,并通过
下的
设置.xml
中提供。当我尝试使用VangSSH 2.3-2.5时,我得到了以下异常:com.jcraft.jsch.JSchException:算法协商失败,版本为2.6-2.10我得到了以下结果:com.jcraft.jsch.JSchException:拒绝主机密钥:主机名