我在项目构建过程中遇到了奇怪的问题。问题可能归结为对 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 没有定义上述库的版本。最大的魔力发生在我们的詹金斯上,其中的构建过程与任何其他笔记本电脑不同。只需将版本添加到本地存储库中的 jaxws-rt pom 即可解决此问题。我相信,当我找到为什么詹金斯能够在没有警告的情况下构建它时,我将能够修复笔记本电脑上的错误。
到目前为止我们调查了什么
注意:短期内不可能重写 pom,因为它已经有点复杂了
在我的例子中
JAVA_HOME
环境变量指向JRE。我将其设置到我的 JDK 安装文件夹(在我的系统上是:JAVA_HOME=C:\Programme\Java\jdk-13.0.2
)。
我的第二个问题是在
jaxws-maven-plugin
版本中使用 2.3.1
。我在 pom.xml 中将其更改为 2.3.3
,如下所示:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.3.3</version>
</dependency>
更改后一切都很好。
要了解为什么构建在詹金斯和笔记本电脑上表现不同,您可以检查以下几点:
<repository>
或 <mirror>
有不同的定义吗?如果设置有差异,您可以检查您的maven安装中的以下文件:
请注意,每个设置文件都可以分别使用 -gs 和 -s mvn 命令行选项覆盖。
就我而言,将 JAVA_HOME 变量设置为正确的 JDK 解决了问题,maven 安装文档中明确提到了这一点 https://maven.apache.org/install.html