简体   繁体   English

JAXB2 Basics Mergeable 插件:设置自定义合并策略

[英]JAXB2 Basics Mergeable plugin: Setting a custom Merge Strategy

I have successfully activated the JAXB2 Basics 'Mergeable' plugin in an ant script as follows:我已成功激活 ant 脚本中的 JAXB2 Basics 'Mergeable' 插件,如下所示:

<target name="generate-sources" depends="clean">

<xjc destdir="${generated.src.dir}" package="${jaxb.package}" extension="true">
  <arg line="
    -Xmergeable
    -Xinheritance"/>

  <binding dir="${altova}">
    <include name="**/*.xjb"/>
  </binding>

  <schema dir="${altova}">
    <include name="**/*.xsd"/>
  </schema>

  <!-- Plugins -->
  <classpath>
    <fileset dir="${xjc.lib}">

      <!-- JAXB2 Basics library -->
      <include name="jaxb2-basics-*.jar"/>

      <!-- JAXB2 Basics library dependencies -->
      <include name="jaxb2-basics-tools-*.jar"/>
      <include name="commons-beanutils-*.jar"/>
      <include name="commons-lang-*.jar"/>
      <include name="commons-logging-*.jar"/>
    </fileset>

    <fileset dir="${webapp.lib}">
      <include name="jaxb2-basics-runtime-*.jar"/>
    </fileset>

    <!-- Contains custom strategy classes -->
    <pathelement location="${webapp.classes}"/>

  </classpath>
</xjc>

It is working, and correctly adding the 'MergeFrom' interface to my generated classes.它正在工作,并将“MergeFrom”接口正确添加到我生成的类中。

My problem is that whenever I try to specify a custom merging strategy using the 'mergeStrategyClass' argument, the 'MergeFrom' interface disappears entirely from the generated class.我的问题是,每当我尝试使用“mergeStrategyClass”参数指定自定义合并策略时,“MergeFrom”接口会完全从生成的 class 中消失。 The syntax I am using is as follows:我使用的语法如下:

<arg line="
    -Xmergeable-mergeStrategyClass=com.acme.foo.CustomMergeStrategy
    -Xinheritance"/>

This is taken straight from the example on the JAXB2 Basics website .这直接取自JAXB2 Basics 网站上的示例。 (The classpath seems to be fine, as when I deliberately miss-spell the class, I get a ClassNotFoundException) (类路径似乎很好,因为当我故意拼错 class 时,我得到了 ClassNotFoundException)

There are no errors being thrown by the ant build, and the classes are generated successfully, except for the missing interface. ant 构建没有抛出任何错误,并且类生成成功,除了缺少接口。

You need to have 2 arguments.您需要有 2 个 arguments。 One to activate mergeable plugin and one to specify the custom merge strategy class.一个激活可合并插件,一个指定自定义合并策略 class。

-Xmergeable -Xmergeable

-Xmergeable-mergeStrategyClass=com.acme.foo.CustomMergeStrategy -Xmergeable-mergeStrategyClass=com.acme.foo.CustomMergeStrategy

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM