maven下载插件不可移植,还是我疯了?

maven下载插件不可移植,还是我疯了?,maven,portability,Maven,Portability,TL;DR:我偶然发现我的pom.xml在Windows上运行良好,但在Linux上失败。因为我对maven还比较陌生,所以我不确定这是一种常见的情况,还是我在什么地方搞砸了 更多详细信息: 我使用的maven下载插件如下所示: <plugin> <groupId>com.googlecode.maven-download-plugin</groupId> <artifactId>maven-download-plugin<

TL;DR:我偶然发现我的
pom.xml
在Windows上运行良好,但在Linux上失败。因为我对maven还比较陌生,所以我不确定这是一种常见的情况,还是我在什么地方搞砸了

更多详细信息:

我使用的
maven下载插件如下所示:

  <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>
我找到了一个解决方法(
false
,然后使用
antrun
“手动”解包),但是没有额外的15行代码,我的pom.xml看起来更好

简而言之:

  • 这实际上是一个可移植性问题,还是我把事情搞砸了
  • 如果这是一个可移植性问题:这在maven中很常见,还是我在这方面运气不好
更多技术细节:

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

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


如果构建失败并出现相同的错误,那么我将清除工作机器上的本地存储库并构建。通常情况下,我会发现我在POM中遗漏了一个依赖项,而这个依赖项恰好存在于我的本地存储库中。修复POM通常会使构建在两个系统上都工作。

您是否检查了Maven版本(
mvn-version
org.codehaus.plexus.util
是Maven Core的一个依赖项,因此,如果
Maven下载插件
在编译它的Maven的不同版本下运行,这就可以解释错误

3.1.1
在我的Windows和CentOS上。但这是一个有趣的想法,我没有考虑过比较maven版本。我在我的UbuntuBox上用各种不同的maven版本尝试了
maven下载插件
,但我没有发现任何问题。你用了
true
和.tar.gz吗?(据我所见,这个插件在不解包的情况下运行良好)我测试了它,但它产生了相同的行为。然而,这是一个相关的测试线索。
[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;