Как я могу заставить JAXB2 генерировать привязки CamelCase? - PullRequest
6 голосов
/ 18 января 2012

Я генерирую Java-классы из WSDL, используя цель wsimport для jaxws-maven-plugin.Из коробки это генерирует отвратительные классы и методы из схемы XML;например, класс с именем MYOBJECT из элемента XML с именем MY_OBJECT.

Я обнаружил, что могу настроить привязки JAXB2 с помощью внешнего файла;это было бы приемлемо для небольшого числа классов и методов, но нежелательны издержки на ручное именование всего в этом случае.

Некоторые поиски раскрывают ссылки на плагин XJC CamelCase Always , ноэто, кажется, не поддерживается, и большинство ссылок 404.Не желая сдаваться, я нашел camelcase-всегда артефакт Maven, который, по-видимому, предоставляет эту функциональность, но я не уверен, как настроить его так, чтобы jaxws-maven-plugin использовал его.*

Как получить привязки CamelCase без указания их всех вручную?

Ответы [ 2 ]

5 голосов
/ 20 января 2012

Я не нашел примеров того, как это сделать с jaxws-maven-plugin, но я нашел примеры, использующие maven-jaxb2-plugin.

Во-первых, вам нужно добавить репозиторий в свой POM:

<repository>
    <id>releases</id>
    <name>Releases</name>
    <url>https://oss.sonatype.org/content/repositories/releases</url>
</repository>

Обратите внимание на объявление плагина и аргументы, добавленные к выполнению maven-jaxb2-plugin.

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.8.0</version>
    <executions>
        <execution>
            <id>jaxb-generate</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <generatePackage>YOUR.PACKAGE.HERE</generatePackage>
        <args>
            <arg>-camelcase-always</arg>
        </args>
        <bindingDirectory>src/main/binding</bindingDirectory>
        <schemas>
            <schema>
                <url>http://YOUR.WSDL.HERE</url>
            </schema>
        </schemas>
        <extension>true</extension>
        <plugins>
            <plugin>
                <groupId>org.andromda.thirdparty.jaxb2_commons</groupId>
                <artifactId>camelcase-always</artifactId>
                <version>1.0</version>
            </plugin>
        </plugins>
    </configuration>
</plugin>

Подробнее см. документы .

0 голосов
/ 19 октября 2017

Может быть полезно для пользователей Apache CXF и плагина cxf-xjc-plugin.

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-xjc-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
      <extensions>
        <extension>org.andromda.thirdparty.jaxb2_commons:camelcase-always:1.0</extension>
      </extensions>
    </configuration>
    <executions>
      <execution>
        <id>generate-sources</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>xsdtojava</goal>
        </goals>
        <configuration>
          <sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot>
          <xsdOptions>
            <xsdOption>
              <xsd>YOUR.XSD.HERE</xsd>
              <packagename>YOUR.PACKAGE.HERE</packagename>
              <extensionArgs>
                <extensionArg>-camelcase-always</extensionArg>
              </extensionArgs>
              <extension>true</extension>
            </xsdOption>
          </xsdOptions>
        </configuration>
      </execution>
    </executions>
  </plugin>
...