プロジェクト内で定義されているカスタム アノテーションを XJC クラスパスに追加することはできますか? これは、maven jaxb2-annotate-pluginを使用する場合です。
問題は、ドキュメントのこの部分に関するものです。
注釈クラスは、コンパイル時に認識されている必要があります。つまり、注釈クラスは XJC クラスパスで使用可能にする必要があります。独自のアノテーションを使用する場合は、アノテーションを事前にコンパイルして、アノテーション クラスを XJC クラスパスに追加する必要があります。
別のプロジェクトを作成してプラグインに追加すると、ドキュメントの例に示すように正常に動作します。
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.12.3</version>
<executions>
<execution>
<id>generate</id>
<phase>process-resources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<args>
<arg>-Xannotate</arg>
</args>
<plugins>
<plugin>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>1.0.2</version>
</plugin>
<plugin>
<groupId>com.acme</groupId>
<artifactId>external-project</artifactId>
<version>1.0.0</version>
</plugin>
</plugins>
</configuration>
</execution>
</executions>
</plugin>
しかし、同じプロジェクトにある注釈を使用したいと思います。拾ってもらうにはどうしたらいいですか?の前の段階でコンパイルするprocess-resources
と、次のようになります。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>compile</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
クラスは XSD からの生成前にコンパイルされますが、それでも例外が発生しますAnnotationClassNotFoundException
。注釈を追加するためだけに別のプロジェクトやモジュールを作成することは避けたいと思います。クラスが見つからず、注釈を提供する唯一の方法が外部プロジェクト/モジュールのように見えるのはなぜですか?