JAXB2 Основы Плагин слияния: Настройка пользовательской стратегии слияния - PullRequest
1 голос
/ 09 июля 2011

Я успешно активировал плагин 'Mergeable' Основы JAXB2 в сценарии ant следующим образом:

<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 Основы . (Кажется, что с classpath все в порядке, так как когда я умышленно пропускаю класс, я получаю ClassNotFoundException)

При сборке ant нет ошибок, и классы генерируются успешно, за исключением отсутствующего интерфейса.

1 Ответ

1 голос
/ 12 июля 2012

Вам нужно иметь 2 аргумента. Один для активации подключаемого плагина и один для указания пользовательского класса стратегии слияния.

-Xmergeable

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...