Сгенерированный код не учитывается в процессе компиляции Maven - PullRequest
3 голосов
/ 07 августа 2011

У меня есть проект maven, генерирующий новый класс из процессора аннотаций во время процесса компиляции.Класс успешно сгенерирован в /target/generated-sources/annotations/, но он не скомпилирован в .jar.Почему?

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>${project.build.source}</source>
        <target>${project.build.target}</target>
        <encoding>${project.build.sourceEncoding}</encoding>
        <compilerArgument>-Xlint</compilerArgument>
        <annotationProcessors>
                <annotationProcessor>net.preprocessing.MyAnnotationProcessor</annotationProcessor>
        </annotationProcessors>
    </configuration>
</plugin>

РЕДАКТИРОВАТЬ

Кажется, это известная ошибка .Если у кого-то есть обходной путь, это приветствуется.

РЕДАКТИРОВАТЬ 2

Вчера я провел несколько тестов, но предложенный обходной путь в заявке не работает.Я предоставил контрольный пример.Если у кого-то есть понимание того, как решить эту проблему, это приветствуется.Имейте в виду, что я новичок в обработке аннотаций, поэтому может быть что-то очевидное, что мне не хватает.

Ответы [ 2 ]

6 голосов
/ 08 августа 2011

Я бы предложил использовать maven-processor-plugin вместо аргумента annotationProcessor, который вы передаете компилятору maven.

Из того, что я прочитал, похоже, есть некоторые проблемы с компилятором Argumens, которые решаются при использовании плагина maven-processor-plugin.

Здесь вы можете найти дополнительную информацию о плагине maven-processor: http://maven -annotation-plugin.googlecode.com / svn / docs / использовании.html

Вот пример того, как плагин процессора заменяет compilerArguments (в примере используется Hibernate Metamodel Generator, но это будет выглядеть примерно одинаково для всех видов процессоров аннотаций ...): http://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor

1 голос
/ 08 августа 2011

Кажется, все, что вы делаете, это компилируете классы, а не собираете флягу. Вам нужно использовать Maven Jar Plugin Это пример использования .

...