是否可以覆盖Maven依赖的包路径?

问题描述 投票:0回答:1

在我的 Maven 项目中,我使用 jaxb2-maven-plugin,它使用 com.sun.xml.bind.external:rngom 依赖项。问题在于,从 rngom 版本 2.2.11 开始,包 org.kohsuke.rngom 已移至 com.sun.tools.rngom。由于漏洞原因,我无法再使用 2.2.11 作为依赖项。

如果我使用高于 2.2.11 的 com.sun.xml.bind.external:rngom 版本,我会出现构建错误,因为这些类不再位于包 org.kohsuke.rngom 中,而是位于 com.sun.tools 中.rngom.

错误:

Exception in thread "main" java.lang.Error:
  java.lang.reflect.InvocationTargetException at
  com.sun.tools.xjc.reader.Ring.get(Ring.java:113) at
  com.sun.tools.xjc.reader.xmlschema.BGMBuilder.(BGMBuilder.java:147) at
  com.sun.tools.xjc.reader.xmlschema.BGMBuilder.build(BGMBuilder.java:117)
  at
  com.sun.tools.xjc.ModelLoader.annotateXMLSchema(ModelLoader.java:407)
  at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:162) at
  com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:117) at
  com.sun.tools.xjc.Driver.run(Driver.java:354) at
  org.codehaus.mojo.jaxb2.javageneration.AbstractJavaGeneratorMojo.performExecution(AbstractJavaGeneratorMojo.java:468)
  at
  org.codehaus.mojo.jaxb2.AbstractJaxbMojo.execute(AbstractJaxbMojo.java:315)
  at
  org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
  at
  org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
  at
  org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
  at
  org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
  at
  org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
  at
  org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) at
  org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) at
  org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) at
  org.apache.maven.cli.MavenCli.execute(MavenCli.java:972) at
  org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293) at
  org.apache.maven.cli.MavenCli.main(MavenCli.java:196) at
  sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at
  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498) at
  org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
  at
  org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
  Caused by: java.lang.reflect.InvocationTargetException at
  sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at
  sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at
  sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
  com.sun.tools.xjc.reader.Ring.get(Ring.java:102) ... 30 more Caused
  by: java.lang.Error: java.lang.reflect.InvocationTargetException at
  com.sun.tools.xjc.reader.Ring.get(Ring.java:113) at
  com.sun.tools.xjc.reader.xmlschema.BindGreen.(BindGreen.java:65) ...
  35 more Caused by: java.lang.reflect.InvocationTargetException at
  sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at
  sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  at
  sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at
  com.sun.tools.xjc.reader.Ring.get(Ring.java:102) ... 36 more Caused
  by: java.lang.NoClassDefFoundError: org/kohsuke/rngom/nc/NameClass at
  com.sun.tools.xjc.reader.xmlschema.ct.ComplexTypeFieldBuilder.(ComplexTypeFieldBuilder.java:66)
  ... 41 more Caused by: java.lang.ClassNotFoundException:
  org.kohsuke.rngom.nc.NameClass at
  org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
  at
  org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
  at
  org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
  at
  org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
  ... 42 more

我怎样才能解决这个依赖问题?

java maven jaxb2-maven-plugin
1个回答
0
投票

我已经解决了这个问题。我必须将 jaxb-xjc 版本从 2.3.0 更新到 2.3.2,将 rngom 更新到 2.3.3。这很令人困惑,因为构建错误中从未提及 jaxb-xjc 依赖项。 您必须在依赖链中一一检查最低版本要求: 插件 2.5.0 对 jaxb-xjc v2.3.2 的最低要求,而 jaxb-xjc 对 rngom v2.3.2 的最低要求。将所有链更新到最低要求。

© www.soinside.com 2019 - 2024. All rights reserved.