Maven离线构建失败,当它鼓励具有无效字符的{google guava url}时

时间:2015-10-02 22:49:34

标签: eclipse maven guava eclipse-cdt tycho

我需要让我的Tycho-Maven构建在离线模式下工作,因此我可以将它部署到没有Internet连接的环境中,让人们从之前下载的工件中运行构建,以获取我的应用所依赖的第三方代码。正在构建的产品是Eclipse RCP产品,使用org.eclipse.tycho:target-platform-configuration插件从RCP目标文件加载依赖项。

首先,我运行mvn -Dmaven.repo.local=/some/path/ -DgeneratePom=true clean install来创建工件,并且构建成功。然后,当我运行mvn -Dmaven.repo.local=/some/path/ -o clean install时,它失败了,因为它在离线模式下运行,并且http://download.eclipse.org/tools/cdt/releases/8.6

没有可用的本地缓存

然后我运行mvn -Dmaven.repo.local=/some/path/ dependency:go-offline使其下载构建所需的所有工件,但它失败并显示以下消息:

  

[错误]无法执行目标   org.apache.maven.plugins:Maven的依赖关系的插件:2.8:解决-插件   项目中的(resolve-plugins):嵌套:无法传输   工件com.google.guava:guava:jar:[10.0.1,14.0.1] from / to central   (https://repo.maven.apache.org/maven2):路径中的非法角色   指数60:   https://repo.maven.apache.org/maven2/com/google/guava/guava/[10.0.1,14.0.1]/guava-[10.0.1,14.0.1].jar

指数60是" ["番石榴罐的版本范围说明符中的字符。我不知道该URL的创建位置以及为什么它不是URL编码的。获得依赖关系会很好:离线目标是完成执行,但我不认为它是我问题的根源。

我说的原因是当我实现这个目标时,我在输出中看到了这个

  

[INFO]添加存储库   http://download.eclipse.org/tools/cdt/releases/8.6 [INFO]获取   来自http://download.eclipse.org/tools/cdt/releases/8.6/r/的p2.index   (0B / 0时为0B)

我不知道为什么它会下载0字节,但我认为这就是为什么当我尝试进行离线构建时无法找到CDT包的缓存。

如果有人知道如何解决此故障,或任何其他方法使离线构建工作,那将非常有用。

2 个答案:

答案 0 :(得分:0)

我在问题跟踪器中创建了此Maven bug report

答案 1 :(得分:0)

在创建一个展示问题的精简项目的过程中,我发现了原因。 pom中org.eclipse.xtend:xtend-maven-plugin的出现导致了这个问题。根据我在构建输出中看到的消息,插件未被使用,可能是配置错误。