2009-07-28 12 views
40

मैं अपने प्रोजेक्ट के लिए कुछ जावा कक्षाएं उत्पन्न करने के लिए Google प्रोटोकॉल बफर का उपयोग कर रहा हूं। मेवेन 2 और इसकी "एंट्रून" प्लगइन का उपयोग करके, इन वर्गों को संकलित करने से पहले ताज़ा रूप से जेनरेट किया जाता है, लक्ष्य/जेनरेट-स्रोतों के आउटपुट और बिल्ड के दौरान क्लासपाथ पर रखा जाता है। तो पीओएम से परियोजना का निर्माण कोई समस्या नहीं है।मैवेन 2 के साथ उत्पन्न कक्षाओं को हल करने के लिए ग्रहण कैसे प्राप्त करूं?

हालांकि, एक्लिप्स को जेनरेट क्लास को हल करने का तरीका नहीं पता है, क्योंकि यह फ़ोल्डर विकास के दौरान आईडीई के क्लासपाथ पर प्रतीत नहीं होता है। मैं m2eclipse का उपयोग कर रहा हूं और इसे मेरे लिए निर्भरता का प्रबंधन कर रहा हूं, इसलिए मैंने मैवेन की देखभाल करने की उम्मीद की थी।

जेनरेट कोड के लिए मैं आईडीई समर्थन (कोड समापन आदि) कैसे प्राप्त कर सकता हूं?

+0

मैंने इस प्रश्न और एक (संभव) उत्तर को पोस्ट किया क्योंकि मैं चीजों को आजमा रहा था, आंशिक रूप से जो मैं सीखता हूं उसे साझा करने के लिए डी, आंशिक रूप से क्योंकि, हालांकि मैं इसे अंततः काम करने के लिए मिला, मैं अभी भी वास्तव में समझ में नहीं आता क्यों। –

+0

प्रश्न http://stackoverflow.com/q/7160006/873282 संबंधित प्रतीत होता है। उत्तर http://stackoverflow.com/a/7160614/873282 एपीटी एम 2 ई कनेक्टर के साथ अंततः बिल्ड-हेल्पर-प्लगइन का उपयोग करने का सुझाव देता है। वर्तमान में, यह एम 2 ई और ग्रहण केप्लर के साथ मेरी तरफ काम नहीं करता है। – koppor

उत्तर

13

क्या आप अपने प्रोजेक्ट एक्सप्लोरर में देखना चाहिए नाम के एक कंटेनर है "Maven:

एक अन्य विकल्प एक नई कस्टम बिल्डर परिभाषित करने के लिए, कि बिल्डर को" पूरा होने पर ताज़ा संसाधन "के लिए निर्दिष्ट करने होगा निर्भरता "सामान्य" संदर्भित पुस्तकालयों "के स्थान पर। इसका मतलब है कि m2eclipse आपके निर्माण पथ का प्रबंधन कर रहा है।

मेरे मामले में, इस लक्ष्य को हासिल करने के लिए, मैं "मॉड्यूल शामिल करें" और परियोजना> गुण की "Maven" खंड पर "जब प्रसंस्करण छोड़ें Maven संकलक प्लगइन संसाधन" संयुक्त राष्ट्र जाँच की जाँच की।

+0

m2eclipse: ठीक है, अच्छा बिंदु।+1 मेरा उत्तर अधिक सामान्य था – VonC

+0

अब मैं सोच रहा हूं कि m2eclipse ने कभी भी उन सेटिंग्स को बनाने से पहले किसी भी निर्भरता को प्रबंधित किया है क्योंकि मेरी निर्भरता अब बहुत अलग दिखती है। अजीब। (मैंने कुछ दिनों पहले इस परियोजना को केवल मैवेन-ized किया था, शायद वह समस्या का हिस्सा था) –

+14

@ हनोफेटज़: मुझे एक ही समस्या है और मेवेन सेक्शन में उन विकल्पों को नहीं मिल रहा है। क्या नए संस्करणों के लिए अलग-अलग तरीका हैं? – letmaik

2

क्या आपने एक्लिप्स परियोजना को रीफ्रेश करने का प्रयास किया था?

alt text http://oyvindhauge.com/blog/wp-content/eclipse_refresh.png

जब एक बाह्य उपकरण नई फ़ाइलें या अद्यतन पुराने लोगों को उत्पन्न, ग्रहण अगले अनुरोध जब तक परिवर्तन का पता लगाने के लिए सक्षम नहीं होंगे।

alt text http://www.cs.lth.se/EDA180/2005/Verktyg/eclipse_refresh.gif

+0

हाँ, मैंने किया। मैंने प्रोजेक्ट-> क्लीन भी किया। ऐसा लगता है, मेवेन "संकलन" लक्ष्य को लागू किया जाना चाहिए (नीचे अपना स्वयं का जवाब देखें), लेकिन मैं अभी भी बेहद अनिश्चित हूं कि मैवेन-ग्रहण एकीकरण वास्तव में कैसे काम करता है। –

+0

हाहा ने कुछ साफ करने और रीफ्रेश करने के बाद मेरे लिए काम किया (ग्रहण नियॉन 3 पर)। धन्यवाद! +1 – erginduran

21

m2eclipse इसका समर्थन नहीं करता है। आपको स्रोत फ़ोल्डर के रूप में मैन्युअल रूप से target/generated-sources फ़ोल्डर जोड़ना होगा। जब आप m2eclipse को "प्रोजेक्ट कॉन्फ़िगरेशन अपडेट करें" के बारे में बताते हैं, तो इसे ओवरराइट कर दिया जाएगा और आपको इसे पुनर्स्थापित करना होगा।

इसके अलावा, सुनिश्चित करें कि ग्रहण कार्यक्षेत्र में परिवर्तन की तलाश में है।

हालांकि कुछ समस्याएं हो सकती हैं। आखिरकार, आप त्रुटियों में भाग लेंगे कि कुछ वर्ग संकलित नहीं किए जा सकते क्योंकि कुछ अन्य वर्ग को हल नहीं किया जा सकता है। संहिता पूर्ण होने पर काम पूरा होगा। इस मुद्दे का मूल कारण यह है कि ग्रहण target में कक्षा फ़ाइलों को बदलते समय ग्रहण भ्रमित हो जाता है।

इसे हल करने के लिए, आपको ग्रहण compile to a different place than Maven पर बताना होगा।

+0

दिलचस्प लिंक। +1 – VonC

+0

एचएम, दिलचस्प। मैं उम्मीद कर रहा था कि m2eclipse सिर्फ ग्रहण प्रक्रियाओं को ट्विक करेगा और यह सभी जादुई रूप से काम करेगा। :) –

+0

लिंक के ऊपर लॉगिन करने की आवश्यकता है, मुझे यह लिंक एक ही खोज के लिए मिला है https://docs.sonatype.org/display/M2ECLIPSE/Separate+Eclipse+and+Maven+output+ फ़ोल्डर्स – Reddy

12

व्यक्तिगत रूप से मैंने उत्पन्न समस्या को एक अलग परियोजना के रूप में स्थापित करके इस समस्या को हल किया और इसे मेरे मुख्य (गैर-जेनरेट) प्रोजेक्ट में निर्भरता बना दी। मैं webservice कक्षाएं उत्पन्न करने के लिए wsdl2java का उपयोग कर रहा था, इसलिए मेरे उप-प्रोजेक्ट में "स्रोत" wdsl और xsds था। जब भी wsdl नियमित रूप से बदल रहा था तब भी अच्छी तरह से काम किया।

+0

के लिए +1 यह एक अच्छा विचार है, मुझे लगता है। –

+0

मैं ऐसा करने से बचने के लिए एक बेहतर समाधान की तलाश में था, लेकिन ऐसा लगता है कि मेरे पास कोई विकल्प नहीं है। – WhyNotHugo

+0

+1 मुझे लगता है कि इस दृष्टिकोण का एक फायदा यह है कि आप अपनी प्राथमिक परियोजना की सफाई करते समय नियमित रूप से अपनी कक्षाओं को स्वत: उत्पन्न नहीं करते हैं। कई परिस्थितियों में, ऑटो-जेनरेटेड क्लासेस एक परियोजना जीवनकाल के लिए स्थिर रहते हैं। –

9

मैवेन और wsdl2java का उपयोग करके उत्पन्न कोड के साथ मुझे यह समस्या थी और यह मैंने हल करने के लिए एक्लिप्स जूनो में किया था।मान लें अपने प्रोजेक्ट Project1 नाम है:

  1. राइट-क्लिक करें Project1 और चुनें गुण
  2. जावा बाएं से बिल्ड पथ और चुनें पुस्तकालय टैब
  3. क्लिक करें कक्षा फ़ोल्डर
  4. बिन का चयन करें चुनें निर्देशिका और ठीक क्लिक करें (Project1/लक्ष्य/उत्पन्न-स्रोतों/bin)
  5. ठीक क्लिक करें और ताज़ा परियोजना

एक अतिरिक्त बोनस आप भी स्रोत कोड संलग्न कर सकते हैं के रूप में: तुम सिर्फ स्रोत लगाव पर बनाया

  • क्लिक करें नया वर्ग फ़ोल्डर के पास

    1. तीर पर क्लिक करें
    2. संपादित करें बटन क्लिक
    3. पथ/Project1/लक्ष्य/उत्पन्न-स्रोतों/Axis2/src सेट
    4. ठीक क्लिक करें
  • +2

    +1 ध्यान दें कि आपको या तो स्वचालित रीफ्रेश सक्षम करना है या जब भी आप कमांड लाइन से मेवेन चलाते हैं तो आपको प्रोजेक्ट को रीफ्रेश करना होगा। अन्यथा, आपको एक्लिप्स में वास्तव में अजीब त्रुटियां मिलेंगी। –

    +0

    इसने समस्या को हल नहीं किया –

    19

    m2eclipse इसका समर्थन करता है। ,

    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>build-helper-maven-plugin</artifactId> 
        <version>1.8</version> 
        <executions> 
         <execution> 
          <id>add-source</id> 
          <phase>generate-sources</phase> 
          <goals> 
           <goal>add-source</goal> 
          </goals> 
          <configuration> 
           <sources> 
            <source>${project.build.directory}/generated-sources/java/</source> 
           </sources> 
          </configuration> 
         </execution> 
        </executions> 
    </plugin> 
    

    दूसरा m2e है कि के लिए समर्थन जोड़ने:: सबसे पहले, अपने निर्माण पथ के लिए पथ को जोड़ने

    <pluginManagement> 
        <plugins> 
         <plugin> 
          <groupId>org.eclipse.m2e</groupId> 
          <artifactId>lifecycle-mapping</artifactId> 
          <version>1.0.0</version> 
          <configuration> 
           <lifecycleMappingMetadata> 
             <pluginExecutions> 
             <pluginExecution> 
              <pluginExecutionFilter> 
              <groupId>org.codehaus.mojo</groupId> 
              <artifactId>build-helper-maven-plugin</artifactId> 
              <versionRange>[1.0,)</versionRange> 
              <goals> 
               <goal>parse-version</goal> 
               <goal>add-source</goal> 
               <goal>maven-version</goal> 
               <goal>add-resource</goal> 
               <goal>add-test-resource</goal> 
               <goal>add-test-source</goal> 
              </goals> 
              </pluginExecutionFilter> 
              <action> 
              <execute> 
               <runOnConfiguration>true</runOnConfiguration> 
               <runOnIncremental>true</runOnIncremental> 
              </execute> 
              </action> 
             </pluginExecution> 
            </pluginExecutions> 
           </lifecycleMappingMetadata> 
          </configuration> 
         </plugin> 
        </plugins> 
    </pluginManagement> 
    

    दूसरे चरण के लिए आवश्यक नहीं है, आपके ग्रहण स्थापना स्थापित किया गया है हो सकता है "संगठन .eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml "प्लगइन। यह प्लगइन विंडो -> वरीयताओं -> मेवेन -> डिस्कवरी के माध्यम से उपलब्ध है। वर्तमान में, यह ग्रहण केप्लर पर यहां काम नहीं करता है, इसलिए, मैंने जेएआर (Catalog URL में दिखाए गए एक्सएमएल से जुड़ा हुआ) लाया और हाथों से org.eclipse.m2e.discovery.lifecyclemapping.buildhelper.xml से टुकड़े निकाले।

    +1

    मैं ग्रहण बाज़ार में एप एम 2 ई कनेक्टर जोड़कर और फिर चरण 1 को छोड़कर लूना के तहत यह काम करने में सक्षम था। धन्यवाद! – user2913094

    1
    1. राइट-क्लिक करें परियोजना का चयन करें गुण
    2. जावा Pathfrom बाईं निर्माण और चयन स्रोत टैब
    3. क्लिक करें फ़ोल्डर जोड़ें
    4. बिन निर्देशिका चयन करें और ठीक
    5. (परियोजना/लक्ष्य क्लिक चुनें/जेनरेट-स्रोत/xxxx) प्रोजेक्ट
    संबंधित मुद्दे

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