maven-download-plugin不可移植,还是我疯了?

时间:2014-03-26 16:16:58

标签: maven portability

TL; DR :我偶然发现我的pom.xml在Windows上工作正常但在Linux上失败的情况。因为我对maven很新,所以我不确定这是一种常见的情况,还是我搞砸了某个地方。

更多详情:

我像这样使用maven-download-plugin

  <plugin>
    <groupId>com.googlecode.maven-download-plugin</groupId>
    <artifactId>maven-download-plugin</artifactId>
    <version>1.1.0</version>
    <executions>
      <execution>
        <id>get-stuff</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>wget</goal>
        </goals>
        <configuration>
          <url>http://myUrl/my.tar.gz</url>
          <unpack>true</unpack>
          <outputDirectory>${project.build.directory}</outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>
 <plugin>

在Windows上,它就像一个魅力(即:它下载和解压缩)。 在Linux上,它失败并出现以下错误:

[ERROR] Failed to execute goal com.googlecode.maven-download-plugin:maven-download-plugin:1.1.0:wget (get-moab) 
  on project my-project: Execution get-stuff of goal com.googlecode.maven-download-plugin:maven-download-plugin:1.1.0:wget failed:
  An API incompatibility was encountered while executing com.googlecode.maven-download-plugin:maven-download-plugin:1.1.0:wget: java.lang.NoSuchMethodError: org.codehaus.plexus.util.cli.Commandline.createArg()Lorg/codehaus/plexus/util/cli/Arg;

我找到了一种解决方法(<unpack>false</unpack>,然后“手动”解压缩antrun),但我的pom.xml看起来更好,没有额外的15行......

简而言之:

  • 它实际上是一个可移植性问题,还是我搞砸了?
  • 如果这是一个可移植性问题:它是否与maven相同,或者我是不是很不走运?

更多技术细节:

  • 我在Linux和Windows上使用相同的插件(相同版本,相同的maven存储库)
  • 在Centos和使用Ubuntu 12.04的虚拟机
  • 上失败了

2 个答案:

答案 0 :(得分:1)

我的第一个故障排除步骤是,在一台计算机而不是另一台计算机上运行构建工作时,清除故障计算机上的本地Maven存储库,并让Maven重新下载所有工件。这通常足以解决问题。

如果构建失败并出现相同的错误,那么我清理工作机器上的本地存储库并构建。通常我会发现我已经错过了POM中的一个依赖,它恰好存在于我的本地存储库中。修复POM通常会使构建在两个系统上都能正常工作。

答案 1 :(得分:1)

您是否检查过Maven版本(mvn -version)? org.codehaus.plexus.util是Maven Core的依赖项,因此如果maven-download-plugin在不同版本的Maven下运行,则会编译它,这可以解释错误。