我正在使用xtext2.13 / java8开发xtext DSL项目。这一切都在maven下构建并执行回归测试,现在我想将构建移动到使用Jenkins在CI下运行。 Jenkins作业在docker镜像中运行maven。我特意使用的是docker图片“maven:3.5-jdk-8”。 我可以看到构建开始 - 日志显示正在下载的p2依赖项,但随后出现此异常:
[INFO] Downloaded from central: https://repo.maven.apache.org/maven2/org/eclipse/tycho/org.eclipse.tycho.p2.tools.impl/1.0.0/org.eclipse.tycho.p2.tools.impl-1.0.0.jar (48 kB at 630 kB/s)
[WARNING] Error initializing: org.eclipse.tycho.p2.resolver.P2DependencyResolver@72725ee1
java.lang.RuntimeException: java.lang.IllegalStateException: Service is not registered class='interface org.eclipse.tycho.core.shared.ProxyServiceFacade'
at org.eclipse.sisu.equinox.embedder.internal.DefaultEquinoxEmbedder.checkStarted (DefaultEquinoxEmbedder.java:312)
...
我可以在本地docker中运行docker / maven构建,它运行正常。我在Jenkins管道中运行时只看到这个错误。
该错误并未提供任何关于底层问题可能是什么的线索。我只能猜测它可能是以下之一:
还有其他建议吗? 感谢
答案 0 :(得分:1)
我有同样的问题。发布我的解决方案以供参考。
根本原因是Maven本地存储库目录的路径中包含?
(即?/.m2/repository
),而Tycho无法正确解析该目录(常规的Maven依赖关系很好)。
发生这种情况的原因是,如果在运行容器时使用--user
标志并且在容器内部,/etc/passwd
中没有该用户的映射,则${user.home}
不能正确解析。
解决方案是在mvn
命令中手动将路径指定为有效路径,例如
-Dmaven.repo.local=/path/to/repo
我想其他选择是:
-v /etc/passwd:/etc/passwd:ro
中)