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