Можно ли добавить пользовательские аннотации в путь к классам 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
. Я бы не хотел создавать отдельные проекты и/или модули только для добавления аннотаций. Почему он не может найти мои классы, и единственным способом предоставления аннотаций являются внешние проекты/модули?