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