次のように、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 Web サイトの例から直接引用したものです。(意図的にクラスのスペルを間違えると、ClassNotFoundExceptionが発生するため、クラスパスは問題ないようです)
Ant ビルドによってスローされるエラーはなく、欠落しているインターフェイスを除いて、クラスは正常に生成されます。