3

在构建我们的项目期间,我遇到了奇怪的问题。问题可能归结为对 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 -Xor的输出所示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版本引起的(只是尝试)
  • 詹金斯没有认可的文件
  • 下载的依赖项在内容方面是相同的(詹金斯与笔记本电脑)

注意:短期内不可能重写 pom,因为它已经有点复杂了

4

3 回答 3

1

在我的情况下JAVA_HOME,环境变量指向 JRE。我将它设置为我的 JDK 安装文件夹(在我的 systwm 上是:)JAVA_HOME=C:\Programme\Java\jdk-13.0.2

我的第二个问题是jaxws-maven-plugin在 version中使用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>

在此更改后,一切都很好。

于 2020-07-08T07:35:24.533 回答
0

要找出构建在 jenkins 和笔记本电脑上的行为不同的原因,您可以检查以下几点:

  • 验证您是否在两侧使用完全相同的 Maven 版本。例如,您可以在 jenkins 中添加一个简单的“mvn -version”任务来输出版本详细信息。
  • 验证您的 maven 安装中没有特殊设置:在 jenkins 和笔记本电脑上执行“mvn help:effective-pom”“mvn help:effective-settings”,然后您可以比较这两个设置:是否有一些不同的定义<repository>还是<mirror>一方面?

如果设置有一些差异,您可以检查 maven 安装中的以下文件:

  • Maven 安装路径中的全局设置:conf/settings.xml
  • jenkins 代理的 $home 中的用户设置:$home/.m2/settings.xml

请注意,可以分别使用-gs-s mvn 命令行选项覆盖每个设置文件。

于 2018-11-28T05:32:39.893 回答