当前位置: 首页 > 知识库问答 >
问题:

Maven JAXB 2插件-如何设置以使用跨方案依赖关系

云胤
2023-03-14

使用maven-jaxb2-plugin为两个相互关联的WSDL模式生成JAXB类。

生成的类如下所示:

com - accounts
   |- payments
   |- other

maven-jaxb2-plugin的设置如下:

<plugin>
   <groupId>org.jvnet.jaxb2.maven2</groupId>
       <artifactId>maven-jaxb2-plugin</artifactId>
       <version>0.13.1</version>
       <executions>
           <execution>
               <id>unipayments</id>
               <goals>
                   <goal>generate</goal>
               </goals>
               <configuration>
                    <schemaLanguage>WSDL</schemaLanguage>
                    <args>
                        <arg>-npa</arg>
                    </args>
                    <schemas>
                        <schema>
                            <url>http://...accounts?wsdl</url>
                        </schema>
                    </schemas>
               </configuration>
            </execution>
            <execution>
                <id>accounts</id>
                <goals>
                   <goal>generate</goal>
                </goals>
                <configuration>
                   <schemaLanguage>WSDL</schemaLanguage>
                   <args>
                       <arg>-npa</arg>
                   </args>
                   <schemas>
                       <schema>
                          <url>http://...payments?wsdl</url>
                       </schema>
                    </schemas>
                </configuration>
             </execution>
    </executions>
</plugin>

其中一个生成类的注释(在任何地方几乎相同):

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "inputTemplate", namespace = "http://...payments", propOrder = {})
public class InputTemplate {...}

问题是SOAPaccountsJAXB类具有上面指定的类的嵌套元素,该元素来自另一个payments方案。因此,当我查询账户服务的对象时,Marshaller会抛出这样的异常,该服务将payment的inputTemplate作为子对象:

unexpected element (uri:"http://...payments", local:"inputTemplate"). 
Expected elements are <{}inputTemplate>

不知道为什么会这样,每个类都指定了命名空间。

那么,如何使用这个插件让具有跨模式依赖关系的JAXB类工作呢?


共有1个答案

桂和同
2023-03-14

这:

意外元素(uri:)http://...payments,本地:“inputTemplate”)。预期元素为

实际上并不是指模式依赖性的问题,而是指名称空间的问题。inputTemplate元素是已知的,但它应该位于默认名称空间中。可能是错误的elementFormDefault或类似的东西。

为了回答您的问题,如果您单独编译您的模式(单独的Maven模块),并且将包含依赖作为事件编译,则最好处理模式间依赖。

https://github.com/highsource/maven-jaxb2-plugin/wiki/Using-Episodes

 类似资料:
  • 在移动和PC的flutter应用程序上工作,移动插件通常涵盖iOS和android,因此移动的代码库保持不变。现在有了PC和Web,插件并不适用于所有平台。在dart.io有Platform.isIOS等可以根据平台更改行为,但仅限于运行时。例如,如果Windows上不存在插件,我需要在编译时有条件地导入插件。像相机、sqlite数据库、文件缓存等。有人说要让平台相关代码进入小部件等,但我仍然需要

  • 问题内容: 我正在使用Airflow计划批处理作业。我有一个DAG(A)每晚运行,另一个DAG(B)每月运行一次。B取决于A已成功完成。但是B需要很长时间才能运行,因此我想将其保存在单独的DAG中,以实现更好的SLA报告。 如何使运行DAG B依赖于同一天DAG A的成功运行? 问题答案: 您可以使用名为ExternalTask​​Sensor的运算符来实现此行为。将安排DAG(B)中的任务(B1

  • 问题内容: 我想排除Maven插件的直接依赖关系,并且此答案中描述的方法不起作用(如此注释所示)。 作为一个特定的例子: 我仍然在依赖项列表中(带有)看到了。我究竟做错了什么? (如果有人对如何用该API的JDK 9等效物替换对工件的依赖有了想法[似乎发生在Java 8上,其中“ [JAXB API os从[jar:… jre / lib /rt.jar]“],我很乐意为此开设一期新书。) 更新资

  • 依赖 AdminLTE 依赖两个主要的框架。下载的软件包中已经包含这两个库,因此你不必手动下载它们。 Bootstrap 4 jQuery 3.3.1+ Popper.js 1.14.7+ 下面列出了所有其他插件 插件 AdminLTE 使用以下插件。相关文档,更新或许可证信息,请访问提供的链接。 你需要手动加载插件的 js/css 文件。 AdminLTE 不会自动加载所有插件,这会造成页面加载

  • 我正在cakephp4中创建一个插件。(此插件位于app/plugins/FileManager中) 这个插件有一个,它包含一个方法来生成一个输入文件,即与字段关联的文件。 在这个方法中,我使用的是插件(https://github.com/ADmad/cakephp-glide)显示与字段关联的图像的缩略图。 如何在我的插件中正确设置对插件的依赖关系? 请注意,我还在应用程序中使用(例如在之外)

  • 我的Java应用程序需要org.objectweb.asm库。我在POM中指定了“ASM”依赖项。它将库与应用程序一起部署。尽管如此,该应用程序仍抛出异常NoClassDefFounderRor:org/objectWeb/asm/ClassVisitor。 我怎样才能解决这个问题? 详细信息:我使用的是Glassfish 2.1.1。该应用程序需要泽西1.1.4,泽西需要ASM3.1。我假设gl