2009-09-26 22 views
16

के साथ एक्लिप्स कंपाइलर के लिए जावा 6 एनोटेशन प्रोसेसिंग कॉन्फ़िगरेशन जावा 6 एनोटेशन प्रोसेसर के लिए ग्रहण प्रोजेक्ट कंपाइलर कॉन्फ़िगरेशन को सेट करने का सबसे अच्छा तरीका क्या है?मैवेन

मेरे समाधान org.eclipse.jdt.apt.core.prefs और factorypath फ़ाइलें मैन्युअल रूप से सेटअप करने के लिए है। यह वह जगह है थोड़ा बोझिल:

  • संदर्भ factorypath फ़ाइल
  • कॉन्फ़िगर ग्रहण एनोटेशन प्रोसेसर उत्पादन निर्देशिका (org.eclipse.jdt.apt.genSrcDirorg.eclipse.jdt.apt.core.prefs में संपत्ति)
  • स्रोत फ़ोल्डर के रूप में ग्रहण एनोटेशन प्रोसेसर उत्पादन निर्देशिका जोड़ें में प्रोसेसर जार

एक समस्या यह है कि ग्रहण उत्पन्न स्रोतों को मैवेन के साथ संकलित किया जाएगा। केवल maven clean compile भरोसेमंद है क्योंकि यह ग्रहण उत्पन्न स्रोत फ़ाइलों को हटा देता है। (ग्रहण और जावैक जेनरेट की गई स्रोत फाइल सिंक से बाहर हो सकती हैं।)

क्या मैवेन स्रोत पथ पर एक्लिप्स उत्पन्न स्रोत फ़ाइलों के बिना मेवेन को कॉन्फ़िगर करने के लिए बेहतर समाधान है?

<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 उपयोग करने का प्रयास कर सकता है। यह वर्तमान में तीन लक्ष्यों को प्रदान करता है:

  • apt-process प्रोजेक्ट स्रोतों पर उपयुक्त निष्पादन।
  • apt:test-process प्रोजेक्ट परीक्षण स्रोतों पर उपयुक्त निष्पादन।
  • 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 है:

आप इस प्रकार अपने निर्माण के हिस्से के रूप में चलाने के लिए लक्ष्यों को कॉन्फ़िगर कर सकते हैं जावा 6 के लिए एपीटी समर्थन जोड़ने के लिए, आप जा सकते हैं और इसके लिए वोट दे सकते हैं यदि यह ऐसा कुछ है जिसे आप भविष्य के संस्करणों में देखना चाहते हैं।

+2

यह और नहीं खुलता है, इसे 2.2 में लागू किया गया था। – bmargulies

3

मैं http://code.google.com/p/maven-annotation-plugin/ जो उपयोग कर रहा हूँ कॉन्फ़िगर करने के लिए सरल है। आप दो तरह से इसका इस्तेमाल कर सकते हैं:

  • संकलन के दौरान स्रोतों उत्पन्न src/करने के लिए (नीचे विन्यास)
  • स्रोतों उत्पन्न "हाथ से" मुख्य/उत्पन्न और उन्हें एससीएम
 <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
पर रखने

एक्लिप्स जूनो में एक आसान समाधान है (मुझे पिछले संस्करणों के बारे में निश्चित नहीं है)। प्राथमिकता/मेवेन/एनोटेशन प्रोसेसिंग एनोटेशन प्रोसेसिंग के लिए तीन तरीके हैं। यह डिफ़ॉल्ट रूप से अक्षम है, लेकिन मैंने दोनों अन्य विकल्पों का परीक्षण किया है और मेरे लिए एक आकर्षण की तरह काम किया है। इस तरह, आपको प्रत्येक प्रोजेक्ट के लिए एपीटी प्रसंस्करण को कॉन्फ़िगर करने या इसके pom.xml को संशोधित करने की आवश्यकता नहीं है।

+0

मुझे विश्वास है कि यह सुविधा कोर ग्रहण एम 2 ई का हिस्सा नहीं है, लेकिन https://github.com/jbosstools/m2e-apt इंस्टॉल करने के बाद और उसके बाद योगदान दिया जाता है। – vorburger