2015-10-30 7 views
10

प्रसंगक्या इंटेलिजे आईडीईए जावा प्रोजेक्ट में डैगर 2 जेनरेटेड क्लास को पहचानने का कोई तरीका है?

मैं Gradle निर्माण प्रणाली के रूप में के साथ जावा में एक निजी परियोजना शुरू कर दिया है और मैं एक डि रूप डैगर 2 उपयोग करना चाहते हैं। ऐसा करने का मुख्य कारण उस पुस्तकालय में उपयोग करना है और बड़ी परियोजनाओं में इसे आसानी से उपयोग करने में सक्षम होना है।

क्या मैंने कोशिश की

मैं IntelliJ विचार पर Google sample रन बनाने में सफल रही किया है

समस्या

IntelliJ विचार मुझे बता रहता है यह उत्पन्न वर्ग को हल नहीं कर सकता कि (इस मामले में DaggerCoffeeApp_Coffee)। लिखित कोड सही है (विशेष रूप से जब आप डैगर 2 का उपयोग करना सीख रहे हैं) यह जानना थोड़ा परेशान है।

सभी जावा वर्ग Google sample के समान हैं।

apply plugin: 'java' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 

    compile 'com.google.dagger:dagger:2.0.1' 
    compile 'com.google.dagger:dagger-compiler:2.0.1' 
} 

प्रश्न

है वहाँ IntelliJ विचार एक उत्पन्न वर्ग के रूप में पहचान DaggerCoffeeApp_Coffee (और इसलिए यह इसके कार्यान्वयन के लिए जाने के लिए संभव बनाने बनाने के लिए किसी भी तरह से `ctrl + left द्वारा: यहाँ मेरी build.gradle फ़ाइल है क्लिक करें)?

+0

के बाद आप एप्लिकेशन को सफलतापूर्वक एक बार तैयार की है करने के लिए सक्षम होना चाहिए: इस प्रकार भी है, जहां यह डैगर द्वारा उत्पन्न स्रोतों पा सकते हैं इंटेलीजे बताने के लिए किया था। बस इस शब्द में अपने टेक्स्ट कर्सर को 'DaggerCoffeeApp_Coffee' लाइन में डालें और' Ctrl + B' का उपयोग करें। –

+0

वास्तव में, ऐप संकलित है और मैं इसे चलाने में कामयाब रहा। मैं जेनरेट क्लास को 'बिल्ड/जेनरेट/src/coffee /' में देख सकता हूं लेकिन इंटेलिजे मुझे बता रहा है कि यह 'DaggerCoffeeApp_Coffee' – Pelocho

उत्तर

12

अंततः मैंने इसे बनाया!

buildscript { 
    repositories { 
     maven { 
      url "https://plugins.gradle.org/m2/" 
     } 
    } 
    dependencies { 
     classpath "net.ltgt.gradle:gradle-apt-plugin:0.4" 
    } 
} 

apply plugin: "net.ltgt.apt" 
apply plugin: 'java' 
apply plugin: 'idea' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 

    compile 'com.google.dagger:dagger:2.0.1' 
    apt 'com.google.dagger:dagger-compiler:2.0.1' 
} 
+4

को हल नहीं कर सकता है' विचार 'प्लगइन को जोड़ना इसे – Gallal

+0

धन्यवाद - मेरे पास पुराना net.ltgt.gradle था : gradle-apt-plugin संस्करण जो मुझे यहां ले जाता है - इसे नवीनतम तय करने के लिए सेट करें। चीयर्स – bsautner

1

यहाँ समाधान है कि मेरे लिए काम किया है::

मैं apt और idea प्लगइन इस तरह तो अभी मेरी build.gradle फ़ाइल रूप जोड़ने का था

फ़ाइल -> परियोजना संरचना -> (मॉड्यूल की सूची के तहत अपनी परियोजना का चयन करें) -> ओपन 'निर्भरता' टैब

फिर, हरे '+' चिह्न पर क्लिक करें, 'JARs या निर्देशिका' चुनें और 'बिल्ड/कक्षा/मुख्य' फ़ोल्डर का चयन करें।

एक अन्य समाधान का निर्माण वर्ग build.gradle अंदर 'निर्भरता' ब्लॉक का उपयोग फ़ाइलों के साथ फ़ोल्डर से जोड़ने के लिए होगा:

https://stackoverflow.com/a/22769015/5761849

4

आप मैन्युअल रूप से IntelliJ में एनोटेशन प्रसंस्करण सक्षम करना होगा।

से: सेटिंग -> निर्माण, निष्पादन, तैनाती -> संकलक -> एनोटेशन प्रोसेसर ->सक्षम

तो पुनर्निर्माण एनोटेशन प्रसंस्करण और परियोजना classpath से प्रोसेसर प्राप्त परियोजना और आप परियोजना में जेनरेट कक्षाओं पाएंगे।

+3

यह शायद एंड्रॉइड परियोजनाओं में मदद करता है लेकिन हमारे मामले में सर्वर अनुप्रयोगों के लिए इसका कोई प्रभाव नहीं पड़ा। –

6

सबसे आसान तरीका मैंने पाया: इंटेलीजे के लिए Annotation Processing पर

plugins { 
    id "net.ltgt.apt" version "0.10" 
} 

apply plugin: 'java' 
apply plugin: 'idea' 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

dependencies { 
    testCompile group: 'junit', name: 'junit', version: '4.12' 

    compile 'com.google.dagger:dagger:2.11' 
    apt 'com.google.dagger:dagger-compiler:2.11' 
} 
  • बारी:

    1. idea प्लगइन जोड़ें और नीचे की तरह Dagger2 निर्भरता जोड़ने Annotation Processors के लिए खोज Settings पर जाएँ और, जांच सक्षम करें नीचे छवि की तरह एनोटेशन प्रोसेसिंग:

    enter image description here

  • +0

    पता नहीं क्यों आप नीचे जा रहे हैं यह एकमात्र चीज है जो मेरे लिए काम करती है – nmu

    2

    मैं संस्करण 2017.3.3 उपयोग कर रहा हूँ IntelliJ विचार, net.ltgt.apt प्लगइन का संस्करण 0.14 और डैगर के संस्करण 2.14.1 और के रूप में अच्छी तरह build.gradle फ़ाइल में idea प्लगइन को लागू करने (Pelocho के answer के रूप में) मैं मैंने पाया

    apply plugin: 'idea' 
    idea { 
        module { 
         sourceDirs += file("$buildDir/generated/source/apt/main") 
         testSourceDirs += file("$buildDir/generated/source/apt/test") 
        } 
    } 
    
    संबंधित मुद्दे