maven下载插件不可移植,还是我疯了?
TL;DR:我偶然发现我的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<
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;