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行......
简而言之:
更多技术细节:
答案 0 :(得分:1)
我的第一个故障排除步骤是,在一台计算机而不是另一台计算机上运行构建工作时,清除故障计算机上的本地Maven存储库,并让Maven重新下载所有工件。这通常足以解决问题。
如果构建失败并出现相同的错误,那么我清理工作机器上的本地存储库并构建。通常我会发现我已经错过了POM中的一个依赖,它恰好存在于我的本地存储库中。修复POM通常会使构建在两个系统上都能正常工作。
答案 1 :(得分:1)
您是否检查过Maven版本(mvn -version
)? org.codehaus.plexus.util
是Maven Core的依赖项,因此如果maven-download-plugin
在不同版本的Maven下运行,则会编译它,这可以解释错误。