2013-12-10 7 views
8

मेरे मैवेन प्रोजेक्ट में, मैं वर्तमान में अपने जावा कोड को कुछ ग्रोवी कोड के साथ मिश्रित कर रहा हूं। मैं ग्रोवी का उपयोग ज्यादातर इस बिंदु पर सेम बनाने के लिए कर रहा हूं। मेरे कुछ जावा कोड सीधे ग्रोवी बीन्स का उपयोग करते हैं।जावा कंपाइलर के बजाय ग्रोवी कंपाइलर का उपयोग करने के लिए इंटेलिजे को कॉन्फ़िगर करना

मैं इस तरह Maven संकलक प्लगइन कॉन्फ़िगर किया गया: -

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <compilerId>groovy-eclipse-compiler</compilerId> 
     <source>${jdk.version}</source> 
     <target>${jdk.version}</target> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-compiler</artifactId> 
      <version>2.8.0-01</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.groovy</groupId> 
      <artifactId>groovy-eclipse-batch</artifactId> 
      <version>2.1.5-03</version> 
     </dependency> 
    </dependencies> 
</plugin> 

जब मैं mvn test उपयोग करते हुए मेरे testcases चलाने के लिए, यह सिर्फ ठीक काम करता है।

हालांकि, जब मैं परीक्षण फ़ाइल पर राइट क्लिक करके इंटेलिजे से सीधे टेस्टकेस चलाता हूं और इसे चलाता हूं, तो मुझे ग्रोवी बीन्स पर "प्रतीक नहीं मिल रहा" त्रुटियां मिल रही हैं। जब मैं त्रुटि लॉग पढ़ता हूं, तो IntelliJ परीक्षण चलाने से पहले मेरे प्रोजेक्ट को संकलित करने के लिए जावा कंपाइलर का उपयोग करता है ... इस प्रकार, परीक्षण विफल हो जाते हैं।

मुझे लगता है कि इंटेलिजे को हमेशा जावा कंपाइलर के बजाय ग्रोवी कंपाइलर का उपयोग करने के निर्देश देने का तरीका नहीं लगता है।

मुझे एसडीके के तहत क्या बदलना चाहिए ताकि ग्रोवी कंपाइलर का उपयोग किया जा सके? मैंने ग्रोवी से संबंधित जेएआर फाइलों को जोड़ने की कोशिश की, लेकिन मुझे अन्य त्रुटियां मिलीं।

enter image description here

अद्यतन 1: प्रति @Seagull सुझाव

मैं "ग्लोबल पुस्तकालय" के अंतर्गत ग्रूवी जार कहा: -

enter image description here

जब मैं से सीधे परीक्षण फ़ाइल निष्पादित IntelliJ, मुझे कुछ ग्रोवी चेतावनियां मिल रही हैं और मुझे अभी भी एक ही त्रुटि मिल रही है: -

enter image description here

धन्यवाद।

+1

क्या आपके पास अपनी परियोजना के लिए ग्रोवी फ्रेमवर्क समर्थन है? प्रोजेक्ट व्यू में प्रोजेक्ट रूट फ़ोल्डर पर राइट-क्लिक करके इसे जोड़ने का प्रयास करें, और मौजूदा का चयन करें, या एक नया ग्रोवी एसडीके बनाएं। इसके अलावा यह मॉड्यूल निर्भरता में ग्रोवी लाइब्रेरी जोड़ देगा। – Seagull

+0

ऐसा करने के लिए मेरे पास कोई विकल्प नहीं है। मैं "प्रोजेक्ट" सेटिंग्स के तहत "प्रोजेक्ट एसडीके" गया, जब मैं नया "जेडीके" जोड़ता हूं और इसे अपने डाउनलोड किए गए ग्रोवी एसडीके पर इंगित करता हूं, तो यह कुछ भी पता नहीं लगाता है। – limc

+0

ग्रोवी के पास सूचीबद्ध होने के लिए कोई अलग एसडीके नहीं है। सामान्य 'ग्लोबल लाइब्रेरी' बनाने का प्रयास करें, यह आइकन ग्रोवी आइकन में बदल जाएगा। इसे अपने मॉड्यूल में जोड़ें, और यह काम कर सकता है। – Seagull

उत्तर

3

यह इस समस्या के बारे में 2 जनवरी, 2014 को इंटेलीजे सहायता टीम से जवाब है: -

IDEA uses groovyc to generate Java stubs for Groovy classes to allow for seamless interop. Unfortunately stub generation code doesn't launch AST transformations (e.g. Immutable) and so the methods generated by those transformations don't make it into Java stubs, hence Java compiler doesn't see them.

Unfortunately I see no workarounds that don't require modifying your project. One would be to place Groovy files into a separate module. Another would be to change the call places into Groovy. The third one would be to replace @Immutable with @Canonical and generate the constructor so that it's actually in the code (and the stubs will contain it).

You may also vote/watch http://youtrack.jetbrains.com/issue/IDEA-52379 to support Eclipse Groovy compiler.

मैं दोनों @Immutable और @Canonical और अपने खुद के कंस्ट्रक्टर्स बनाते हैं, को हटाने 2 कारणों के लिए समाप्त हो गया: -

  • यह मुझे इंटेलिजे से सीधे अपना टेस्ट केस चलाने की अनुमति देता है।
  • यह @Immutable और @Canonical द्वारा निःशुल्क प्रदान किए गए अप्रयुक्त रचनाकारों के कारण जैकोको कोड कवरेज रिपोर्ट को स्पष्ट रूप से साफ करता है।
5

मैं JDK 1.8.0_60 मैक 10.10.5 पर Intellij ideaIC-15.0.3-कस्टम JDK-bundled.dmg के नवीनतम संस्करण पर इस समस्या थी,।

पोस्टरिटी के लिए सभी चरणों सहित ...

  1. टर्मिनल से, मैं groovy का नवीनतम संस्करण स्थापित, sdkman का उपयोग कर: sdk install groovy 2.4.5
  2. Intellij में,> शीर्ष परियोजना पर राइट क्लिक करें "फ्रेमवर्क समर्थन जोड़ें ..." का चयन करें>groovy 2.4.5 जोड़े (अगर यह पहले से ही जोड़ा नहीं गया है)।
  3. Intellij में, "पसंद"> "निर्माण, निष्पादन, तैनाती"> "संकलक"> "संसाधन पैटर्न:">!?*.groovy;!?*.java
  4. पुन: संयोजित करने के लिए परियोजना !?*.java;!?*.groovy से आदेश को बदल (कमान + शिफ्ट + एफ 9), अब इसे सफलतापूर्वक संकलित करना चाहिए।
संबंधित मुद्दे