我需要让我的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包的缓存。
如果有人知道如何解决此故障,或任何其他方法使离线构建工作,那将非常有用。
答案 0 :(得分:0)
我在问题跟踪器中创建了此Maven bug report。
答案 1 :(得分:0)
在创建一个展示问题的精简项目的过程中,我发现了原因。 pom中org.eclipse.xtend:xtend-maven-plugin
的出现导致了这个问题。根据我在构建输出中看到的消息,插件未被使用,可能是配置错误。