com.sun.xml.ws:jaxws-rt:pom:2.2.10的POM文件无效。

6
我在我们项目的构建过程中遇到了一个奇怪的问题。这个问题可能归结于对jaxws-rt 2.2.10的依赖关系。主要问题是这个警告,它阻止了传递依赖项传播到我们的分发版。 com.sun.xml.ws:jaxws-rt:pom:2.2.10 的 POM 无效,传递依赖项(如果有)将不可用 根据 mvn dependency:tree -Xmvn dependency:tree -Dverbose 输出,pom 可能是错误的。
[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中没有endorsed文件 - 下载的依赖关系在内容上是相同的(Jenkins vs 笔记本电脑)
请注意:短期内重写pom可能不太可能,因为它已经有点复杂了。

我认为你的配置/仓库管理器等存在一些问题:原因是https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.sun.xml.bind%22%20AND%20a%3A%22jaxb-impl%22%20AND%20v%3A%222.2.10%22和http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.sun.xml.bind%22%20AND%20a%3A%22jaxb-core%22%20AND%20v%3A%222.2.10%22以及http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22javax.xml.bind%22%20AND%20a%3A%22jaxb-api%22%20AND%20v%3A%222.2.10%22,staxex-ex似乎不存在...你能否发布完整的pom文件.... - khmarbaise
问题只出现在那些jaxws-rt pom版本不全的人身上。如果我在我的笔记本电脑上添加缺失的版本到这个确切的pom中,一切都可以正常工作,并且所有库都是生成的war文件的一部分。我们使用了一些pom层次结构,所以发布相当复杂。但是我遇到了同样的问题,当直接在主pom的依赖项部分定义对jaxws-rt的依赖关系时。Maven无法解析这些库的正确版本,但在Jenkins上他可以,我不知道为什么。 - Zveratko
3个回答

4

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

我的第二个问题是使用版本为 2.3.1jaxws-maven-plugin。 我在 pom.xml 中将它改为了 2.3.3,如下所示:

<dependency>
    <groupId>com.sun.xml.ws</groupId>
    <artifactId>jaxws-rt</artifactId>
    <version>2.3.3</version>
</dependency>

这些更改之后,一切都很好。


我曾经遇到过类似的问题,将JDK8(我之前使用的是JDK11)切换后问题得以解决。 - Pierluigi Vernetto

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命令行选项进行覆盖。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接