【发布时间】:2020-09-30 15:00:33
【问题描述】:
我们刚刚将项目迁移到 java 11。我们在 pom 中为 jdk-8 中存在但在 jdk-11 中删除的 jaxb &co 包配置了新的依赖项。
我们没想到的是deployit plugin 无法完成其工作,并且对于同一包的不同类重复了 7 次丑陋的错误。
NoClassDefFoundError:无法加载内置提供程序:org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlSeeAlsoProvider
这并不是一个很大的惊喜。实际上,我们在 pom 中为 jaxb 及其类型声明的依赖项是为了使所需的库包含在应用程序包中,因为它们在 JDK 中不再可用。但是deploy-it 有自己的依赖关系。没有诀窍是如何告诉它依赖于 jaxb?
我考虑了几个选项:
- 在插件的依赖项部分添加依赖项,但不确定是否不覆盖其 pom 的依赖项。
- 将插件升级到更新的版本(顺便说一句,它在几年前更名为 xldeploy),但 system requirements 仍然是带有 6.0 的 jdk-8。
- 向 jvm 添加参数以尝试使用
--add-modules java.xml.bind之类的方法,如记录的here,但插件似乎不接受其配置中的<argLine>部分
我在网上彻底搜索了如何为 maven 插件配置依赖项,甚至关于该主题,也没有找到太多信息。至多我发现了目标dependency:resolve-plugins,它在理论上为您提供了插件的依赖树,但似乎对deployit没有多大作用
无论如何,我觉得我的问题可能并不少见,所以也许我在谷歌上搜索了错误的关键字。有人对此事有提示吗?
【问题讨论】:
标签: jaxb resteasy java-11 xl-deploy deployit