java Maven 使用 scp 部署快照抛出 NoSuchElementException

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/45483711/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 08:42:30  来源:igfitidea点击:

Maven deploy snapshot with scp throws NoSuchElementException

javamavensnapshotwagon

提问by Simon Urli

I want to be able to deploy a snapshot of a maven project on a nexus repository using scp. Here's the current configuration of my pom.xml for interesting parts:

我希望能够使用 scp 在 nexus 存储库上部署 Maven 项目的快照。这是我 pom.xml 中有趣部分的当前配置:

<distributionManagement>
    <snapshotRepository>
      <id>gforge.inria.fr-snapshot</id>
      <name>inria-snapshots</name>
      <url>scp://scm.gforge.inria.fr/home/groups/spoon/htdocs/repositories/snapshots</url>
    </snapshotRepository>
    <site>
      <id>gforge.inria.fr-site</id>
      <name>inria</name>
      <url>scp://scm.gforge.inria.fr/home/groups/spoon/htdocs/mvnsites/spoon-core</url>
    </site>
  </distributionManagement>
  [...]
<extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
         <artifactId>wagon-ssh</artifactId>
      </extension>
    </extensions>
  </build>

The entire pom.xml is available there.

整个 pom.xml 在那里可用。

We are using pair of keys to authenticate to our repository, so I enter the following in ~/.m2/settings.xml:

我们使用一对密钥对我们的存储库进行身份验证,因此我在中输入以下内容~/.m2/settings.xml

<server>
  <id>gforge.inria.fr-snapshot</id>
  <username>XXXX</username>
  <privateKey>/path/to/the/private/key</privateKey>
</server>

And when I launch the mvn clean deployI obtain the following error:

当我启动时,mvn clean deploy我收到以下错误:

[ERROR] Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.2:deploy (injected-nexus-deploy) on project spoon-core: Failed to deploy artifacts/metadata: Cannot access scp://scm.gforge.inria.fr/home/groups/spoon/htdocs/repositories/snapshots with type default using the available connector factories: BasicRepositoryConnectorFactory: Cannot access scp://scm.gforge.inria.fr/home/groups/spoon/htdocs/repositories/snapshots using the registered transporter factories: WagonTransporterFactory: java.util.NoSuchElementException
[ERROR] role: org.apache.maven.wagon.Wagon
[ERROR] roleHint: scp

Executing with debugging option show me the following stacktrace:

使用调试选项执行会显示以下堆栈跟踪:

java.util.NoSuchElementException
      role: org.apache.maven.wagon.Wagon
  roleHint: scp
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
      role: org.apache.maven.wagon.Wagon
  roleHint: scp
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:267)
    at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
    at org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider.lookup(PlexusWagonProvider.java:58)
    at org.eclipse.aether.transport.wagon.WagonTransporter.lookupWagon(WagonTransporter.java:271)
    at org.eclipse.aether.transport.wagon.WagonTransporter.<init>(WagonTransporter.java:115)
    at org.eclipse.aether.transport.wagon.WagonTransporterFactory.newInstance(WagonTransporterFactory.java:127)
    at org.eclipse.aether.internal.impl.DefaultTransporterProvider.newTransporter(DefaultTransporterProvider.java:110)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnector.<init>(BasicRepositoryConnector.java:115)
    at org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory.newInstance(BasicRepositoryConnectorFactory.java:180)
    at org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider.newRepositoryConnector(DefaultRepositoryConnectorProvider.java:113)
    at org.eclipse.aether.internal.impl.DefaultDeployer.deploy(DefaultDeployer.java:265)

For information, I'm using Maven 3.3.9, and Java 8 (I tested with openjdk and oracle JDK, with the same result).

有关信息,我使用的是 Maven 3.3.9 和 Java 8(我使用 openjdk 和 oracle JDK 进行了测试,结果相同)。

I know my pom.xml setup should work: it worked for months on a virtual machine. Sadly I did not setup that VM and we lost it recently without any backup. I don't have any information on the java or maven version it was on this machine.

我知道我的 pom.xml 设置应该可以工作:它在虚拟机上工作了几个月。遗憾的是我没有设置那个虚拟机,我们最近在没有任何备份的情况下丢失了它。我没有关于这台机器上的 java 或 maven 版本的任何信息。

This VM was used through a jenkins Job to do mvn deployperiodically and you could have a look on the different logs of this job there: https://ci.inria.fr/sos/job/Spoon-Snapshot-Deployer/. Before July the 28th it worked well, the logs showing my error are since August the 2nd.

该 VM 通过 jenkins 作业mvn deploy定期执行,您可以在此处查看此作业的不同日志:https: //ci.inria.fr/sos/job/Spoon-Snapshot-Deployer/ 。在 7 月 28 日之前它运行良好,显示我的错误的日志是从 8 月 2 日开始的。

回答by Aurélien Bourdon

Following your pom, error come from the wagon-sshextension, used by the nexus-staging-maven-plugin.

在您的 pom 之后,错误来自wagon-ssh扩展名,由nexus-staging-maven-plugin.

As you don't know what could be versions used by your crashed VM, did you try by just updating the wagon-sshversion associated to the nexus-staging-maven-plugin? For example, by using:

由于您不知道崩溃的 VM 可能使用哪些版本,您是否尝试通过更新wagon-sshnexus-staging-maven-plugin? 例如,通过使用:

 <plugin>
    <groupId>org.sonatype.plugins</groupId>
    <artifactId>nexus-staging-maven-plugin</artifactId>
    <version>1.6.2</version>
    <extensions>true</extensions>
    <configuration>
      <serverId>ossrh</serverId>
      <nexusUrl>https://oss.sonatype.org/</nexusUrl>
      <autoReleaseAfterClose>true</autoReleaseAfterClose>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.12</version>
      </dependency>
    </dependencies>
  </plugin>