有什么办法让maven scp旅行车在linux/mac/windows平台上保持一致吗?

Ric*_*ssu 9 java ssh scp jsch maven

鉴于关于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>
Run Code Online (Sandbox Code Playgroud)

scp方法 - settings.xml:

 <server>
      <id>internal</id>
      <username>*********</username>
      <password>*********</password>
      <configuration>
           <StrictHostKeyChecking>ask</StrictHostKeyChecking>
      </configuration>
 </server>
Run Code Online (Sandbox Code Playgroud)

我也尝试将StrictHostKeyChecking设置为"no",但是,除了安全风险之外,在特定机器上无效.

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

ctr*_*den 11

Maven的SSH货车使用JSch,纯Java实现SSH的,其工作方式,无论操作系统.(当这个问题最初发布时,情况可能并非如此,但现在确实如此.)Deploy Plugin文档仍然有一个名为Deployment of artifacts的指南,但是这种方法不再需要了.

以下是我使用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>
Run Code Online (Sandbox Code Playgroud)

settings.xml:

<settings>
  <servers>
    <server>
      <id>my-ssh-repo</id>
      <username>myUser</username>
      <password>myPass</password>
    </server>
  </servers>
</settings>
Run Code Online (Sandbox Code Playgroud)

  • 在某处,我在url中读取`scpexe://`将选择`sshExecutable`而不是JSch.但这不再适用于旅行车1.0-beta4,wagon-ssh 1.0.我想使用plink/pscp,以便我可以使用Peagent加载的公钥,但无法找到让maven使用它的方法.相反,我最终将.ppk导出为openssh格式,并通过`settings.xml`中``server>`下的`<privateKey>`提供 (3认同)
  • @LiborStefek 我调查了为什么 wagon-ssh 被弃用;请参阅 [WAGON-616](https://issues.apache.org/jira/browse/WAGON-616)。我留下了[评论](https://issues.apache.org/jira/browse/WAGON-616?focusedCommentId=17495080&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-17495080)要求澄清目前的情况。 (2认同)