Подтвердить что ты не робот

Пример предварения аннотации Maven и генерации классов в том же процессе компиляции?

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

Есть ли у каждого поэтапная процедура для реализации такого проекта?

4b9b3361

Ответ 1

После многократной навигации по существующей документации в сети я придумал следующее:

Что нужно уточнить:

  • Для обработки аннотаций по заданному проекту P сначала нужен обработчик аннотации, скомпилированный в отдельной библиотеке S. P должен иметь зависимость от S.
  • Реализация обработки аннотаций в Java 5 абсолютно не то же самое, что и в Java 6.
  • Java 5 полагается на отдельное выполнение apt. Соответствующие учебники здесь и здесь помогают понять основы обработки и реализации аннотации в Java 5. Хорошее чтение для новичков.
  • Реализация обработки аннотаций в Java 5 с Maven сложна. Нужно добавить локальную зависимость к tools.jar для доступа к API, описанному в этих руководствах. Не чисто. Некоторые сторонние плагины, вызывающие apt, доступны, но не хорошо документированы.
  • Те, кто использует Java 6, должны не запускать свои процессоры в соответствии с приведенными выше учебниками.

Обработка аннотаций в Java 6 с помощью Maven

  • Новый package был доставлен на Java 6 для обработки аннотаций: Вставная обработка аннотаций.
  • Чтобы реализовать процессор, создайте отдельный проект Maven. В приведенном выше руководстве или this объясняется, как действовать. Это наша библиотека S.
  • Затем создайте свой проект P и добавьте зависимость Maven от S.
  • В настоящее время существует проблема с maven-compiler-plugin, но обходной путь доступен здесь. Используйте его, чтобы скомпилировать сгенерированный код как часть существующего аннотированного кода.

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

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

Ответ 2

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>

Ответ 3

Maven-Antlr-Plugin точно делает это. Он генерирует классы Java из грамматики, а плагин компиляции сгенерирует сгенерированные классы. Может ли это быть полезным maven-annotation-plugin