使用依赖于Java 11的jaxb的maven deployit插件

问题描述

我们刚刚将项目迁移到Java11。我们在pom中为jdk-8中存在但在jdk-11中已删除的jaxb&co软件包配置了新的依赖关系。

我们没想到的是deployit plugin未能完成工作,并且针对同一包的各个类重复了7次丑陋的错误

NoClassDefFoundError:无法加载内置提供程序:org.jboss.resteasy.plugins.providers.jaxb.JAXBXmlSeeAlsoProvider

这不是一个很大的惊喜。实际上,我们声明的jaxb依赖项及其在pom中的依赖项是为了使所需的库包含在应用程序包中,因为JDK中不再提供它们。但是deploy-it有其自己的依赖性。没有诀窍是如何告诉它依赖jaxb?

我考虑了几种选择:

  1. 插件的“依赖项”部分添加依赖项,但不确定如果不覆盖其pom的依赖项,将采用该依赖项。
  2. 插件升级到最新版本(几年前BTW将其名称更改为xldeploy),但是system requirements仍是6.0的jdk-8。
  3. 向jvm添加参数以尝试使用here中记载的--add-modules java.xml.bind之类的方法,但是该插件在其配置中似乎不接受<argLine>部分

我在网上彻底搜索了如何为maven插件配置依赖项,即使在该主题上,也没有找到太多信息。最多我发现目标dependency:resolve-plugins可以在理论上为您提供插件的依赖关系树,但似乎对deployit的作用不大

无论如何,我感觉到我的问题可能并不太常见,所以也许我搜索错误的关键字。有人对此事有暗示吗?

解决方法

该问题的解决方案是使用maven toolchain plugin在JDK11中进行编译,同时仍在JDK 8上运行Maven。