2011-11-03 17 views
5

मैं बाहर maven प्लगइन के लिए m2e कनेक्टर विकसित कर रहा हूं, जो वास्तव में कुछ स्रोत उत्पन्न करता है। मुझे स्रोत फ़ोल्डर के रूप में कार्यक्षेत्र में जेनरेट किए गए स्रोत (फ़ोल्डर) को जोड़ने की आवश्यकता है।प्रोग्रामिक रूप से ग्रहण प्लगइन से स्रोत फ़ोल्डर जोड़ें

मैं JavaCore संपादित .classpath फ़ाइल के लिए इस्तेमाल किया:

IJavaProject javaProject = JavaCore.create(proj); 
    IClasspathEntry[] entries = javaProject.getRawClasspath(); 

    IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1]; 
    System.arraycopy(entries, 0, newEntries, 0, entries.length); 

    Path myPath = new Path("target/generated-sources"); 
    IClasspathEntry myEntry = JavaCore.newSourceEntry(myPath); 

    newEntries[entries.length] = JavaCore.newSourceEntry(myEntry.getPath()); 
    javaProject.setRawClasspath(newEntries, null); 

लेकिन इस कोड काम नहीं करता है यह कहते हैं: IClasspathEntry के लिए पथ अगर मैं का उपयोग करने की कोशिश की पूर्ण

होना चाहिए पूर्ण पथ, इसे .classpath पर लिखा गया है लेकिन ग्रहण में इसे स्रोत फ़ोल्डर के रूप में प्रदर्शित नहीं किया गया था।

क्या किसी को कोई सुझाव है? यह आसान काम होना चाहिए लेकिन मैं यह समझ नहीं सकता कि इसे कैसे हल किया जाए।

उत्तर

5

समस्या हल ... यह आसान था तो मैं उम्मीद ...

IJavaProject javaProject = JavaCore.create(proj); 
IClasspathEntry[] entries = javaProject.getRawClasspath(); 

IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1]; 
System.arraycopy(entries, 0, newEntries, 0, entries.length); 

IPath srcPath= javaProject.getPath().append("target/generated-sources"); 
IClasspathEntry srcEntry= JavaCore.newSourceEntry(srcPath, null); 

newEntries[entries.length] = JavaCore.newSourceEntry(srcEntry.getPath()); 
javaProject.setRawClasspath(newEntries, null); 

और यह .classpath को फ़ाइल स्रोत प्रविष्टि जोड़ देगा:

+0

धन्यवाद श्रीमान! हालांकि मैं इस समय इसे आजमा नहीं सकता हूं, मैं आशा करता हूं कि कल मैं इस जानकारी का उपयोग कर पाऊंगा। इस मुद्दे के बारे में खराब दस्तावेज दिए जाने के कारण आपने मुझे सिरदर्द का एक बड़ा सौदा बचाया होगा। – Vectovox

0

JavaCore.newProjectEntry(...) के बजाय JavaCore.newSourceEntry(...) विधियों में से किसी एक को आजमाएं।

+0

मेरी गलती है ... मैं बुरा लिखा था कोड। मैंने JavaCore.newProjectEntry (...) की कोशिश की और अपवाद था: IClasspathEntry के लिए पथ पूर्ण होना चाहिए –

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