1

我们刚刚将项目迁移到 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?

我考虑了几个选项:

  1. 在插件的依赖项部分添加依赖项,但如果它不覆盖其 pom 的依赖项,则不确定是否会被采用。
  2. 将插件升级到更新的版本(顺便说一句,几年前它更名为xldeploy ),但系统要求仍然是 jdk-8 和 6.0。
  3. 向 jvm 添加参数以尝试使用此处--add-modules java.xml.bind记录的方法,但插件似乎不接受其配置中的部分<argLine>

我在网上彻底搜索了如何为 maven 插件配置依赖项,甚至在该主题上,也没有找到太多信息。至多我发现了一个目标dependency:resolve-plugins,它在理论上给你插件的依赖树,但似乎对你没有多大用处deployit

无论如何,我觉得我的问题可能并不少见,所以也许我在谷歌上搜索了错误的关键字。有人对此事有任何暗示吗?

4

1 回答 1

1

这个问题的解决方案是使用maven 工具链插件在 JDK11 中编译,同时仍然使用 JDK 8 运行 Maven。

于 2020-10-07T17:47:01.770 回答