我已经在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>
它正在工作,并正确地将'MergeFrom'接口添加到我生成的类中。
我的问题是,每当我尝试使用'mergeStrategyClass'参数指定自定义合并策略时,'MergeFrom'接口就会完全从生成的类中消失。我使用的语法如下:
<arg line="
-Xmergeable-mergeStrategyClass=com.acme.foo.CustomMergeStrategy
-Xinheritance"/>
直接来自JAXB2 Basics website上的示例。 (类路径似乎很好,因为当我故意错过拼写类时,我得到一个ClassNotFoundException)
ant build不会抛出任何错误,并且除了缺少的接口外,这些类都会成功生成。
答案 0 :(得分:1)
你需要有2个参数。一个用于激活可合并插件,另一个用于指定自定义合并策略类。
-Xmergeable
-Xmergeable-mergeStrategyClass = com.acme.foo.CustomMergeStrategy