在构建我们的项目时,我遇到了一个奇怪的问题。这个问题可能归结为对jaxws-rt 2.2.10的依赖。主要的问题是这个警告,它阻止了可传递依赖传播到我们的可分发的。The POM for com.sun.xml.ws:jaxws-rt:pom:2.2.10 is invalid, transitive dependencies (if any) will not be available
pom可能是错误的,如mvn dependency:tree -X
或mvn dependency:tree -Dverbose
的输出所示
[WARNING] Failed to build parent project for com.sun.xml.ws:bundles:pom:2.2.10
[WARNING] Failed to build parent project for com.sun.xml.ws:jaxws-rt:pom:2.2.10
[WARNING] The POM for com.sun.xml.ws:jaxws-rt:pom:2.2.10 is invalid, transitive dependencies (if any) will not be available: 5 problems were encountered while building the effective model for co
m.sun.xml.ws:jaxws-rt:2.2.10
[ERROR] 'dependencies.dependency.version' for javax.xml.bind:jaxb-api:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.bind:jaxb-core:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.bind:jaxb-impl:jar is missing. @
[ERROR] 'dependencies.dependency.version' for org.jvnet.staxex:stax-ex:jar is missing. @
[ERROR] 'dependencies.dependency.version' for com.sun.xml.fastinfoset:FastInfoset:jar is missing. @
字符串
奇怪的是,jaxws-rt pom并没有定义上述库的版本。最大的神奇之处发生在我们的jenkins上,它的构建过程不同于任何其他笔记本电脑。只需在本地repo中将版本添加到jaxws-rt pom中就解决了这个问题。我相信,当我发现为什么jenkins能够在没有警告的情况下构建它时,我将能够修复笔记本电脑上的错误。
到目前为止我们调查了什么
- 似乎它不是maven版本特定的
- 似乎不是特定于操作系统
- 我不相信这可能是由不同的java版本引起的(只是尝试)
- 在jenkins中没有endoresed文件
- 下载的依赖项在内容方面是相同的(jenkins与笔记本电脑)
注意:由于pom已经很复杂,因此在短期内无法重写。
3条答案
按热度按时间j8yoct9x1#
在我的例子中,
JAVA_HOME
环境变量指向JRE。我将它设置为我的JDK安装文件夹(在我的系统中是:JAVA_HOME=C:\Programme\Java\jdk-13.0.2
)。我的第二个问题是在
2.3.1
版本中使用jaxws-maven-plugin
。我在pom.xml中将其更改为2.3.3
,如下所示:字符串
在这一变化之后,一切都很好。
hec6srdp2#
要找出为什么在jenkins和你的笔记本电脑上的构建行为不同,你可以检查以下几点:
<repository>
或<mirror>
的定义是否不同?如果设置中存在一些差异,您可以在maven安装中检查以下文件:
请注意,可以分别使用**-gs和-s**mvn命令行选项覆盖每个设置文件。
m1m5dgzv3#
在我的例子中,将JAVA_HOME变量设置为正确的JDK解决了这个问题,在maven安装文档https://maven.apache.org/install.html中明确提到了这一点