Настройка конфигурации обработки аннотаций Java 6 для компилятора eclipse с помощью maven

Как лучше всего настроить конфигурацию компилятора проекта eclipse для процессоров аннотаций Java 6?

Мое решение - настроить файлы org.eclipse.jdt.apt.core.prefs и factorypath вручную. Это немного громоздко:

  • Ссылка на jar процессора в файле factorypath
  • Настройте свойство (org.eclipse.jdt.apt.genSrcDir выходного каталога процессора аннотаций eclipse в org.eclipse.jdt.apt.core.prefs)
  • Добавьте выходной каталог процессора аннотаций eclipse в качестве исходной папки

Одна из проблем заключается в том, что исходные коды, сгенерированные eclipse, будут скомпилированы с помощью maven. Только maven clean compile является надежным, поскольку он удаляет исходные файлы, созданные eclipse. (Сгенерированные Eclipse и javac исходные файлы могли быть не синхронизированы.)

Есть ли лучшее решение для настройки maven без исходных файлов, сгенерированных eclipse, на исходном пути maven?

<project>
  <properties>
    <eclipse.generated.src>${project.build.directory}/eclipse</eclipse.generated.src>
  </properties>
  <build>
      <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.4</version>
            <executions>
                <execution>
                  <id>add-source</id>
                  <phase>generate-sources</phase>
                  <goals> <goal>add-source</goal> </goals>
                  <configuration>
                      <sources>
                        <source>${eclipse.generated.src}</source>
                      </sources>
                    </configuration>
              </execution>
            </executions>
          </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <configuration>
          <additionalConfig>
            <file> <name>.factorypath</name>
        <content><![CDATA[<factorypath>
  <factorypathentry kind="VARJAR" id="M2_REPO/processor/processor.jar" enabled="true" runInBatchMode="false"/>
  </factorypath>
  ]]>      </content>
            </file>
            <file>
              <name>.settings/org.eclipse.jdt.apt.core.prefs</name>
        <content><![CDATA[
  eclipse.preferences.version=1
  org.eclipse.jdt.apt.aptEnabled=true
  org.eclipse.jdt.apt.genSrcDir=${eclipse.generated.src}
  org.eclipse.jdt.apt.reconcileEnabled=true
   ]]>     </content>
            </file>
          </additionalConfig>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

person Thomas Jung    schedule 26.09.2009    source источник


Ответы (3)


Обновление: вы можете попробовать использовать apt-maven-plugin. В настоящее время он преследует три цели:

  • apt-process Выполняет apt для источников проекта.
  • apt: test-process Выполняет apt при тестировании проекта источники.
  • apt: eclipse Создает файлы Eclipse для подходящей интеграции.

Вы можете настроить цели для запуска как части вашей сборки следующим образом:

<build>
  ...
  <plugins>
    ...
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>apt-maven-plugin</artifactId>
      <version>1.0-alpha-2</version>
      <executions>
        <execution>
          <goals>
            <goal>process</goal>
            <goal>test-process</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
  ...
</build>

По умолчанию выходной каталог установлен на ${project.build.directory}/generated-sources/apt,

Существует open Jira против плагина компилятора, чтобы добавить поддержку APT для Java 6, вы можете пойти и проголосовать за него, если это то, что вы хотите увидеть в будущих версиях.

person Rich Seller    schedule 26.09.2009
comment
Он больше не открыт, это было реализовано в 2.2. - person bmargulies; 23.04.2012

Я использую http://code.google.com/p/maven-annotation-plugin/, который проще настроить. Вы можете использовать его двумя способами:

  • генерировать исходники во время компиляции (конфигурация ниже)
  • генерировать исходники «вручную» в src / main / generated и хранить их в SCM
       <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>
                    <configuration>
                        <compilerArguments>-encoding ${project.build.sourceEncoding}</compilerArguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>



       <plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <executions>
                <execution>
                    <id>process-test</id>
                    <goals>
                        <goal>process-test</goal>
                    </goals>
                    <phase>generate-test-sources</phase>
                    <configuration>
                        <compilerArguments>-encoding ${project.build.sourceEncoding}</compilerArguments>
                    </configuration>
                </execution>
            </executions>
        </plugin>


      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>${project.build.sourceEncoding}</encoding>
                <!-- Disable annotation processors during normal compilation -->
                <compilerArgument>-proc:none</compilerArgument>
            </configuration>
        </plugin>
person Piotr Gwiazda    schedule 22.09.2010

В Eclipse Juno есть более простое решение (насчет предыдущих версий я не уверен). В Preferences / Maven / Annotation Processing есть три режима обработки аннотаций. По умолчанию он отключен, но я протестировал оба других варианта, и они мне понравились. Таким образом, вам не нужно настраивать обработку APT для каждого проекта или изменять его pom.xml.

person sinuhepop    schedule 10.01.2013
comment
Я считаю, что эта функция не является частью ядра Eclipse M2E, но добавлена ​​во время и после установки github.com/jbosstools / m2e-apt. - person vorburger; 23.05.2016