是否可以将自定义注释添加到 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
。我想避免仅仅为了添加注释而制作单独的项目和/或模块。为什么它找不到我的类,并且提供注释的唯一方法似乎是外部项目/模块?