2009-09-26 14 views
16

Java 6アノテーション・プロセッサ用のEclipseプロジェクト・コンパイラ設定を設定する最良の方法は何ですか?mavenを使用したEclipseコンパイラのJava 6アノテーション処理設定の設定

私の解決策は、org.eclipse.jdt.apt.core.prefsfactorypathファイルを手動でセットアップすることです。

  • org.eclipse.jdt.apt.core.prefs(org.eclipse.jdt.apt.genSrcDirプロパティ日食注釈プロセッサの出力ディレクトリ
  • factorypathファイルに

    • リファレンスの設定プロセッサジャーソースフォルダ
    • として日食注釈プロセッサの出力ディレクトリを追加します。これは少し面倒です

    1つの問題は、Eclipseで生成されたソースがmavenでコンパイルされることです。 Eclipseが生成するソースファイルを削除するので、信頼できるのはmaven clean compileのみです。 (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> 
    
  • 答えて

    6

    更新:apt-maven-pluginを試すことができます。現在、次の3つの目標を提供しています。

    • apt-processプロジェクトソースでaptを実行します。
    • apt:test-processプロジェクトテストソースでaptを実行します。
    • apt:eclipse apt統合のための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がありますJava 6のAPTサポートを追加するには、これが将来のバージョンで見たいものならば、投票して投票することができます。

    +2

    もうオープンしていないので、2.2で実装されました。 – bmargulies

    3

    設定が簡単なhttp://code.google.com/p/maven-annotation-plugin/を使用しています。次の2つの方法でそれを使用することができます。

    • が生成/ srcに/メインに(以下の設定)
    • は「手で」のソースを生成するコンパイル時にソースを生成し、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
    上でそれらを保ちます

    Eclipse Junoにはもっと簡単なソリューションがあります(以前のバージョンについてはわかりません)。 Preferences/Maven/Annotation Processing注釈処理には3つのモードがあります。これはデフォルトでは無効になっていますが、私は他のオプションも両方試してみて、私の魅力のように働いています。このようにして、すべてのプロジェクトに対してAPT処理を設定したり、そのpom.xmlを変更したりする必要はありません。

    +0

    私はこの機能がコアEclipse M2Eの一部ではないと確信していますが、https://github.com/jbosstools/m2e-aptのインストール後に提供されています。 – vorburger

    関連する問題