11

我尝试使用 scp 将 maven 创建的耳朵上传到应用程序服务器。

当我试图跑

mvn wagon:upload-single

但我收到以下错误:

[错误] 无法在项目 de.volkswagen.dps.ear 上执行目标 org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli):无法创建 Wagon 实例null: url 不能为 null -> [帮助 1]
org.apache.maven.lifecycle.LifecycleExecutionException: 未能在项目 de.volkswagen.dps.ear 上执行目标 org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli):无法为 null 创建 Wagon 实例
    在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:585)
    在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324)
    在 org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247)
    在 org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104)
    在 org.apache.maven.cli.MavenCli.execute(MavenCli.java:427)
    在 org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157)
    在 org.apache.maven.cli.MavenCli.main(MavenCli.java:121)
    在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    在 java.lang.reflect.Method.invoke(Method.java:597)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    在 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
引起:org.apache.maven.plugin.MojoExecutionException: Unable to create a Wagon instance for null
    在 org.codehaus.mojo.wagon.AbstractWagonMojo.createWagon(AbstractWagonMojo.java:83)
    在 org.codehaus.mojo.wagon.AbstractSingleWagonMojo.execute(AbstractSingleWagonMojo.java:62)
    在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105)
    在 org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577)
    ... 14 更多
引起:java.lang.NullPointerException: url 不能为空
    在 org.apache.maven.wagon.repository.Repository.(Repository.java:88)
    在 org.codehaus.mojo.wagon.shared.WagonUtils.createWagon(WagonUtils.java:51)
    在 org.codehaus.mojo.wagon.AbstractWagonMojo.createWagon(AbstractWagonMojo.java:79)
    ... 17 更多

我试图将它添加到 pom 中,但它似乎没有任何效果:

我在 pom.xml 中添加了以下内容:

...
    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ssh</artifactId>
            <version>1.0-beta-6</version>
        </extension>
    </extensions>

    <plugins>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>wagon-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
                <execution>
                    <id>upload-ear</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>upload</goal>
                    </goals>
                    <configuration>
                        <fromFile>${project.build.directory}/${project.build.finalName}.ear</fromFile> 
                        <url>scp://servername/</url>
                        <toDir>.</toDir>
                    </configuration>
                </execution>
            </executions>
        </plugin>
....

任何人都可以解释我如何使这项工作?

4

2 回答 2

14

您当前的配置遵循使用页面中给出的示例并且是正确的。然而,在这个例子中,configuration元素是在 an 内声明的execution,因此只适用于这个特定execution的 .

因此,当您mvn wagon:upload-single在命令行上调用时,configuration没有“使用”并且确实没有url配置参数。

如果你想从命令行调用插件,要么在命令行上使用-Durl=foo等传递参数,要么添加一个“全局”configuration元素:

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

  <plugins>   
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>wagon-maven-plugin</artifactId>
      <version>1.0-beta-3</version>
      <configuration>
        <fromFile>${project.build.directory}/${project.build.finalName}.ear</fromFile> 
        <url>scp://servername/</url>
        <toDir>.</toDir>
      </configuration>
      ...
    </plugin>
    ...
  </plugins>
  ...
</build>
于 2010-07-21T20:27:53.693 回答
0

您可以使用以下配置运行以下命令来运行插件pom.xml

mvn org.codehaus.mojo:wagon-maven-plugin:upload@upload-ear
于 2021-04-06T11:47:58.383 回答