1

次のように、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 ビルドによってスローされるエラーはなく、欠落しているインターフェイスを除いて、クラスは正常に生成されます。

4

1 に答える 1

1

2 つの引数が必要です。1 つはマージ可能なプラグインをアクティブにするためのもので、もう 1 つはカスタム マージ戦略クラスを指定するためのものです。

-Xmergeable

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

于 2012-07-12T14:33:09.200 に答える