2011-07-09 3 views
1

をマージし、次のように私は正常にAntスクリプトでJAXB2基本「マージ可能」プラグインを有効にしている:JAXB2基本マージ可能プラグイン:カスタム設定戦略

<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'インターフェイスが消えてしまうことです。これはJAXB2 Basics website上の例からまっすぐに取られる

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

次のように私が使用しています構文は次のとおりです。 (クラスパスはうまくいくように思えますが、意図的にクラスを綴っていないと、ClassNotFoundExceptionが発生します)

antビルドではスローされず、クラスが正常に生成されます。

+0

私はこれを再現することはできません。ここに問題を提出してください(http://jira.highsource.org/browse/JIIB)、問題を示すサンプルプロジェクトを送ってください。コードから、私は実際にこれが起こっていると想像することはできません。 MyClassはMergeFromを実装しています。クラスで最初に行われることです。 – lexicore

+0

まだ問題が提起されるのを待っています。 – lexicore

答えて

1

2つの引数が必要です。 1つはマージ可能なプラグインを有効にし、もう1つはカスタムマージ戦略クラスを指定します。

-Xmergeable

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

関連する問題