Maven пример предварительной обработки аннотаций и генерации классов в одном процессе компиляции?



Есть ли у кого-нибудь чистый пример проекта maven, предварительно обрабатывающего аннотации классов во время компиляции с последующим поколением классов, которые будут скомпилированы в том же процессе компиляции?



Есть ли у кого-нибудь пошаговая процедура для реализации такого проекта?

646   3  

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 , но обходной путь доступенздесь . Используйте его для компиляции сгенерированного кода как части существующего аннотированного кода.

...и генерация кода

  • отличная библиотека генерации кода Java под названиемCodeModel доступна в Maven central. Хороший учебник доступен здесь. Пакет обработки аннотаций javax предлагает некоторые инструменты для получения выходных данных тоже.

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

    Ничего не найдено.