2015-10-16 5 views
6

बनाता है ग्रहण जावा कोड संकलित करने के लिए अपने स्वयं के कंपाइलर (ईसीजे) का उपयोग करता है। एक्लिप्स के साथ संकलित एक प्रोग्राम को डिबग करना आसान है, क्योंकि सरल कोड परिवर्तन तुरंत लागू किए जा सकते हैं (हॉट कोड प्रतिस्थापन द्वारा)।मैवेन में ग्रहण जावा कंपाइलर (ecj) का उपयोग

दूसरी ओर मेवेन (डिफ़ॉल्ट रूप से) ओरेकल जेडीके का उपयोग करता है, जो ग्रहण डीबग सत्र में हॉट कोड प्रतिस्थापन को रोकने वाले विभिन्न बाइट कोड उत्पन्न करता है।

इसलिए यदि मैं प्रोग्राम को डीबग करने की योजना बना रहा हूं, तो मैं अपने मैवेन बिल्ड के साथ एक्लिप्स ईसीजे कंपाइलर का उपयोग करना चाहता हूं।

  • संकलित जारी

    $ mvn package 
    
  • सक्षम गर्म कोड प्रतिस्थापन के साथ

    संकलित स्नैपशॉट

    $ mvn -P ecj package 
    

इसके अलावा प्रोफाइल: मेरे लिए एक सुविधाजनक तरीका एक "ECJ" प्रोफ़ाइल होगा सक्रियण settings.xml या ग्रहण परियोजना गुणों में भी निर्दिष्ट किया जा सकता है।

मेरे प्रश्न हैं:

  1. यह सही रास्ता तय करना है?
  2. यह कैसे कॉन्फ़िगर किया जा सकता है?
  3. क्या मैवेन टूलचेन का उपयोग इस के लिए किया जा सकता है?

उत्तर

9

It is possible डिफ़ॉल्ट javac संकलक कि maven-compiler-plugin द्वारा किया जाता है बदलने के लिए। ग्रहण कंपाइलर को आर्टिफैक्ट plexus-compiler-eclipse में बंडल किया गया है और इसे maven-compiler-plugin की विशेषता पर सेट करके घोषित किया गया है।

<profile> 
    <id>ecj</id> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.6.0</version> 
     <configuration> 
      <compilerId>eclipse</compilerId> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-compiler-eclipse</artifactId> 
      <version>2.8.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

प्लगइन plexus-compiler GitHub repository में बनाए रखा है:

आप एक custom profile के लिए इस बदलाव को सक्रिय करना चाहते हैं, तो आप निम्न कॉन्फ़िगरेशन हो सकता था। संस्करण 2.8.1 uses 3.11.1.v20150902-1521 of JDT, हालांकि आप प्लेक्सस कंपाइलर निर्भरता के बाद org.eclipse.tycho:org.eclipse.jdt.core पर निर्भरता जोड़कर अपने स्वयं के संस्करण का उपयोग कर सकते हैं।

+0

एक आकर्षण की तरह काम करता है! धन्यवाद! –

+2

अच्छा यह आपके लिए काम करता है। बस मामले में: मुझे नहीं पता था कि जहां प्लेक्सस-कंपाइलर-ग्रहण बनाए रखा जा रहा है और नतीजतन मुझे यकीन नहीं है कि वे ecj के नवीनतम संस्करणों के साथ एकीकरण प्रदान करते हैं (नवीनतम मैं 20140604 के रूप में ecj का एकीकरण था)। उपर्युक्त दृष्टिकोण के साथ किसी भी समस्या के मामले में, जेडीटी एफएक्यू में कुछ संकेत भी हैं (कार्य के लिए टाइपो-कंपाइलर-जेडीटी की सिफारिश करना): https://wiki.eclipse.org/JDT/FAQ#Can_I_use_JDT_outside_Eclipse_to_compile_Java_code.3F –

संबंधित मुद्दे