2009-09-26 17 views
16

Jaki jest najlepszy sposób konfiguracji konfiguracji kompilatora Eclipse dla procesorów adnotacyjnych Java 6?Konfiguracja przetwarzania adnotacji Java 6 dla kompilatora Eclipse z maven

Moje rozwiązanie polega na ręcznym skonfigurowaniu plików org.eclipse.jdt.apt.core.prefs i factorypath. Jest to nieco kłopotliwe:

  • referencyjny słoik procesora w pliku factorypath
  • Konfiguracja procesor adnotacji eclipse katalogu wyjściowego (org.eclipse.jdt.apt.genSrcDir nieruchomość w org.eclipse.jdt.apt.core.prefs)
  • Dodaj katalog wyjściowy procesor zaćmienie adnotacji w folderze źródłowym

Jednym z problemów jest to, że generowane przez eclipse źródła będą kompilowane z mavenem. Tylko maven clean compile jest niezawodny, ponieważ usuwa pliki źródłowe generowane przez eclipse. (Pliki źródłowe generowane przez Eclipse i javac mogą być niezsynchronizowane.)

Czy istnieje lepsze rozwiązanie do konfigurowania maven bez plików źródłowych generowanych przez eclipse na ścieżce źródłowej?

<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> 

Odpowiedz

6

Aktualizacja: Można spróbować użyć funkcji apt-maven-plugin. Obecnie oferuje trzy cele:

Można skonfigurować cele uruchomić jako część swojej produkcji w następujący sposób:

<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> 

Domyślnie katalog wyjściowy jest ustawiony na ${project.build.directory}/generated-sources/apt,

Jest open Jira przeciwko plugin kompilator aby dodać obsługę APT dla Java 6, możesz iść i głosować na nią, jeśli jest to coś, co chcesz zobaczyć w przyszłych wersjach.

+2

To już nie jest otwarte, zostało zaimplementowane w wersji 2.2. – bmargulies

3

Używam http://code.google.com/p/maven-annotation-plugin/ który jest łatwiejszy do skonfigurowania. Można go używać na dwa sposoby:

  • generować źródła podczas kompilacji (konfiguracja poniżej)
  • generowania źródeł "ręcznie" do src/main/wygenerowane i zachować je na 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> 
2

Jest prostsze rozwiązanie w Eclipse Juno (nie jestem pewien o poprzednich wersjach). W obszarze Preferences/Maven/Annotation Processing dostępne są trzy tryby przetwarzania opisów. Domyślnie jest on wyłączony, ale przetestowałem obie opcje i zadziałało jak dla mnie urok. W ten sposób nie musisz konfigurować przetwarzania APT dla każdego projektu ani modyfikować jego pom.xml.

+0

Wierzę, że ta funkcja nie jest częścią jądra Eclipse M2E, ale została wniesiona przez i po zainstalowaniu https://github.com/jbosstools/m2e-apt. – vorburger

Powiązane problemy