1

古いサイトにいくつかのドキュメントがありますが 、バインディング ファイルを使用する場合に構成を適用する方法が不明です。

これは、生成された JAXB オブジェクトに toString、equals などを追加するために使用する私の Maven 構成です。

  <plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.12.3</version>
    <executions>
      <execution>
        <goals>
          <goal>generate</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <schemaIncludes>
        <include>*.xsd</include>
      </schemaIncludes>
      <args>
        <arg>-Xfluent-api</arg>
        <arg>-XautoNameResolution</arg>
        <arg>-XtoString</arg>
        <arg>-Xequals</arg>
        <arg>-XhashCode</arg>
        <arg>-Xcopyable</arg>
      </args>
      <plugins>
        <plugin>
          <groupId>org.jvnet.jaxb2_commons</groupId>
          <artifactId>jaxb2-fluent-api</artifactId>
          <version>3.0</version>
        </plugin>
        <plugin>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>jaxb2-basics</artifactId>
            <version>0.9.4</version>
        </plugin>
      </plugins>
    </configuration>
  </plugin>
4

1 に答える 1

6

src/main/resourcesxsd にバインドするファイル bindings.xjb を追加し、関連する要素を選択してから、toString:ignored注釈を追加します。

hashCode:ignoreまたは を使用して、すべてのプラグインから無視することもできますbasics:ignore

    <jaxb:bindings jaxb:version="1.0"
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc"
               xmlns:toString="http://jaxb2-commons.dev.java.net/basic/toString"
               xmlns:basic="http://jaxb2-commons.dev.java.net/basic"
               jaxb:extensionBindingPrefixes="basic copyable equals hashCode mergeable toString">

  <jaxb:bindings schemaLocation="PasswordPolicy.xsd">
    <jaxb:bindings node="xs:complexType[@name='ppValidatePolicyRequestType']//xs:element[@name='password']">
      <toString:ignored/>
    </jaxb:bindings>
  </jaxb:bindings>

  <jaxb:bindings schemaLocation="UserManagement.xsd">
    <jaxb:bindings node="xs:complexType[@name='umCreateUserRequestType']//xs:element[@name='password']">
      <toString:ignored/>
    </jaxb:bindings>
    <jaxb:bindings node="xs:complexType[@name='umUpdateUserRequestType']//xs:element[@name='password']">
      <toString:ignored/>
    </jaxb:bindings>
    <jaxb:bindings node="xs:complexType[@name='umResetUserPasswordRequestType']//xs:element[@name='password']">
      <toString:ignored/>
    </jaxb:bindings>
    <jaxb:bindings node="xs:complexType[@name='umCreateUserRequestType']//xs:element[@name='secretAnswer']">
      <toString:ignored/>
    </jaxb:bindings>
    <jaxb:bindings node="xs:complexType[@name='umUpdateUserRequestType']//xs:element[@name='secretAnswer']">
      <toString:ignored/>
    </jaxb:bindings>
  </jaxb:bindings>

</jaxb:bindings>

appendFields(...)toString から無視している場合、生成されたクラスで、該当するフィールドがメソッドから削除されていることがわかります。

于 2015-10-12T02:30:15.220 に答える