Maven 2 使用Maven通过SCP上传文件失败

Maven 2 使用Maven通过SCP上传文件失败,maven-2,upload,scp,wagon,Maven 2,Upload,Scp,Wagon,我尝试使用scp将maven创建的ear上传到应用服务器 当我试着跑的时候 mvn wagon:upload-single 但我得到了以下错误: [ERROR] Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance f

我尝试使用scp将maven创建的ear上传到应用服务器

当我试着跑的时候

mvn wagon:upload-single
但我得到了以下错误:

[ERROR] Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null: url can not be null -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:wagon-maven-plugin:1.0-beta-3:upload-single (default-cli) on project de.volkswagen.dps.ear: Unable to create a Wagon instance for null at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:585) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157) at org.apache.maven.cli.MavenCli.main(MavenCli.java:121) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to create a Wagon instance for null at org.codehaus.mojo.wagon.AbstractWagonMojo.createWagon(AbstractWagonMojo.java:83) at org.codehaus.mojo.wagon.AbstractSingleWagonMojo.execute(AbstractSingleWagonMojo.java:62) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577) ... 14 more Caused by: java.lang.NullPointerException: url can not be null at org.apache.maven.wagon.repository.Repository.(Repository.java:88) at org.codehaus.mojo.wagon.shared.WagonUtils.createWagon(WagonUtils.java:51) at org.codehaus.mojo.wagon.AbstractWagonMojo.createWagon(AbstractWagonMojo.java:79) ... 17 more [错误]无法在project de.volkswagen.dps.ear上执行goal org.codehaus.mojo:wagen maven plugin:1.0-beta-3:upload single(默认cli):无法为null创建wagen实例:url不能为null->[帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:未能在project de.volkswagen.dps.ear上执行目标org.codehaus.mojo:wagen maven插件:1.0-beta-3:上载单个(默认cli):无法为null创建wagen实例 位于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(本机方法)处 位于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:无法为null创建WAG实例 位于org.codehaus.mojo.wago.AbstractWagonMojo.CreateWago(AbstractWagonMojo.java:83) 位于org.codehaus.mojo.wag.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不能为null 位于org.apache.maven.wagg.repository.repository.(repository.java:88) 在org.codehaus.mojo.wagg.shared.WagonUtils.createwaggan(WagonUtils.java:51) 位于org.codehaus.mojo.wago.AbstractWagonMojo.CreateWago(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>
....
。。。
org.apache.maven.wagen
马车ssh
1.0-beta-6
org.codehaus.mojo
货车司机插件
1.0-beta-3
上传耳朵
部署
上传
${project.build.directory}/${project.build.finalName}.ear
scp://servername/
.
....

有人能解释一下我是如何做到这一点的吗?

您当前的配置遵循页面中给出的示例,并且是正确的。但是,在此示例中,
配置
元素在
执行
中声明,因此仅适用于特定的
执行

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

如果要从命令行调用插件,请使用
-Durl=foo
等在命令行上传递参数,或者添加一个“全局”配置
元素:

<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>

org.apache.maven.wagen
马车ssh
1.0-beta-6
org.codehaus.mojo
货车司机插件
1.0-beta-3
${project.build.directory}/${project.build.finalName}.ear
scp://servername/
.
...
...
...

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

mvn org.codehaus.mojo:wagon-maven-plugin:upload@upload-ear
配置中的元素不在WARGO:upload single中考虑。您可以在自身中指定targetDir。