Maven пример предварительной обработки аннотаций и генерации классов в одном процессе компиляции?
Есть ли у кого-нибудь чистый пример проекта maven, предварительно обрабатывающего аннотации классов во время компиляции с последующим поколением классов, которые будут скомпилированы в том же процессе компиляции?
Есть ли у кого-нибудь пошаговая процедура для реализации такого проекта?
3 ответов:
После долгих поисков в существующей документации в сети я пришел к следующему выводу:
Что необходимо уточнить:
- для обработки аннотаций по заданному проекту P сначала требуется процессор аннотаций, скомпилированный в отдельной библиотеке S. P должен иметь зависимость от S.
- реализация обработки аннотаций в Java 5-это абсолютно не то же самое, что в Java 6.
- Java 5 полагается на отдельное выполнение apt. То соответствующие учебные пособия здесь и здесь помогают понять основы обработки аннотаций и реализации в Java 5. Хорошее чтение для новичков.
- реализация обработки аннотаций в Java 5с Maven является сложной задачей. Для доступа к API, описанному в этих руководствах, необходимо добавить локальную зависимость к
tools.jar. Не чистить. Некоторые сторонние плагины, вызывающие apt, доступны, но не очень хорошо документированы.- те, кто использует Java 6, должны Не начните реализацию своих процессоров в соответствии с вышеприведенными учебными пособиями.
Обработка аннотаций в Java 6 с Maven
- новый пакет был поставлен в Java 6 для обработки аннотаций: подключаемая обработка аннотаций.
- чтобы реализовать процессор, создайте отдельный проект Maven. Вышеприведенный учебник или Этот объясняет, как действовать дальше. Это наша библиотека S.
- затем создайте свой проект и добавить Зависимость Maven от S.
- в настоящее время существуетпроблема Сmaven-compiler-plugin , но обходной путь доступенздесь . Используйте его для компиляции сгенерированного кода как части существующего аннотированного кода.
...и генерация кода
Maven-processor-plugin может это сделать...
Https://code.google.com/p/maven-annotation-plugin/
Пример из документации:
<build> <plugins> <!-- Run annotation processors on src/main/java sources --> <plugin> <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <executions> <execution> <id>process</id> <goals> <goal>process</goal> </goals> <phase>generate-sources</phase> </execution> </executions> </plugin> <!-- Disable annotation processors during normal compilation --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgument>-proc:none</compilerArgument> </configuration> </plugin> </plugins> </build>
Maven-Antlr-плагин именно это и делает. Он генерирует Java-классы из грамматики и скомпилировать плагин компилируется созданных классов. Может быть, вам пригодится maven-annotation-plugin
Comments