2014-11-05 6 views
6

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

धन्यवाद।

+0

क्या आपके पास एक विस्तृत विस्तृत उदाहरण है? मैं दो संभावित कारणों के बारे में सोच सकता हूं कि स्रोत फ़ोल्डर क्यों नहीं जोड़ा गया है। 1) स्रोत फ़ोल्डर मॉडल स्रोत का हिस्सा नहीं है आपके स्रोत फ़ोल्डरों का है ... या 2) जब प्रोजेक्ट आयात किया जाता है, तो फ़ोल्डर अभी तक मौजूद नहीं है। चाहे आप '1' या '2' मामले में हैं, एक अलग समाधान क्रम में हो सकता है। तो अगर आप यह निर्धारित कर सकते हैं कि यह कौन सा है जो मदद करेगा। इसका प्रयास करने का एक तरीका यह सुनिश्चित करना है कि आप आयात करने से पहले फ़ोल्डर बना लें (भले ही यह खाली हो)। अगर फ़ोल्डर अब जोड़ा जा रहा है, तो यह दूसरे कारण के कारण होना चाहिए। – Kris

उत्तर

1

एंड्रियास का जवाब काम करता है यदि आप gradle cleanEclipse eclipse का उपयोग कर कमांड लाइन से एक्लिप्स परियोजना उत्पन्न करते हैं। यदि आप एसटीएस ग्रहण ग्रैडल प्लगइन का उपयोग करते हैं, तो आपको afterEclipseImport कार्य को लागू करना होगा।

project.ext { 
    genSrcDir = projectDir.absolutePath + '/gen/main/java' 
} 
compileJava { 
    options.compilerArgs += ['-s', project.genSrcDir] 
} 
compileJava.doFirst { 
    task createGenDir << { 
    ant.mkdir(dir: project.genSrcDir) 
    } 
    createGenDir.execute() 
    println 'createGenDir DONE' 
} 
eclipse.classpath.file.whenMerged { 
    classpath - > 
    def genSrc = new org.gradle.plugins.ide.eclipse.model.SourceFolder('gen/main/java', null) 
    classpath.entries.add(genSrc) 
} 
task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { 
    doLast { 
    compileJava.execute() 
    def classpath = new XmlParser().parse(file(".classpath")) 
    new Node(classpath, "classpathentry", [kind: 'src', path: 'gen/main/java']); 
    def writer = new FileWriter(file(".classpath")) 
    def printer = new XmlNodePrinter(new PrintWriter(writer)) 
    printer.setPreserveWhitespace(true) 
    printer.print(classpath) 
    } 
} 

enter image description here

+0

आह ठीक है, मैं देखता हूं लेकिन मैं इसे थोड़ा सा एसटीएस ग्रहण ग्राडल प्लगइन का उपयोग नहीं कर रहा हूं अस्थिर IMHO। –

+0

कृपया स्रोत को लिंक प्रदान करें :) [लिंक] (http://blog.tamalsaha.com/post/102154319104/how-to-add-gradle-generated-source-folder-to) – Nico

7

आप आसानी से उत्पन्न फ़ोल्डर मैन्युअल classpath को द्वारा

eclipse { 
    classpath { 
     file.whenMerged { cp -> 
      cp.entries.add(new org.gradle.plugins.ide.eclipse.model.SourceFolder('gen/main/java', null)) 
     } 
    } 
} 

जोड़ सकते हैं जिससे null एक दूसरे निर्माता आर्ग के रूप में इसका मतलब है कि ग्रहण डिफ़ॉल्ट उत्पादन फ़ोल्डर के भीतर संकलित "वर्ग" फ़ाइलें रखना चाहिए। यदि आप इसे बदलना चाहते हैं, तो बस इसके बजाय String प्रदान करें, उदा। 'बिन पीढ़ी'।

+1

आपको इसे 'पहले से जुड़े' में करना चाहिए, अन्यथा 'ग्रेडल ग्रहण' को पुन: चालू करने से _second_ classpath प्रविष्टि (और ग्रहण इसके बारे में शिकायत करेगा) –

2

मुझे लगता है कि यह एक छोटा सा क्लीनर बस मुख्य स्रोत सेट करने के लिए एक दूसरा स्रोत निर्देशिका जोड़ने के लिए है: नीचे अपना पूरा काम करने का टुकड़ा है।

अपने build.gradle को यह करें:

sourceSets { 
    main { 
     java { 
      srcDirs += ["src/gen/java"] 
     } 
    } 
} 

यह निम्न पंक्ति अपने .classpath में उत्पन्न में परिणाम:

<classpathentry kind="src" path="src/gen/java"/> 

मैं Gradle 4.1 के साथ इस परीक्षण किया है, लेकिन मुझे लगता है यह था पुराने संस्करणों के साथ भी काम करें।

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

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