2008-11-06 10 views

उत्तर

226

आप निर्माण सहायक के साथ एक नया स्रोत निर्देशिका जोड़ सकते हैं:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 
         <sources> 
          <source>src/main/generated</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
+1

इस दृष्टिकोण के साथ एकमात्र मुद्दा यह है कि अंतिम आर्टिफैक्ट में जावा स्रोत फाइलें भी शामिल हैं (.java फ़ाइलें)। क्या स्रोत फ़ाइलों को बाहर करने का कोई तरीका है और इसमें केवल .class फ़ाइलें शामिल हैं? –

+15

दूसरों के लिए सिर्फ एक नोट (मेरे जैसा), 'प्लगइन' तत्व '/ project/build/plugins' में है और'/project/build/plugin 'प्रबंधन/प्लगइन्स' – Betlista

+1

@saravana_pc में यह समस्या नहीं है ... – Lyth

29

यह मेरे लिए काम किया

<build> 
    <sourceDirectory>.</sourceDirectory> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <includes> 
      <include>src/main/java/**/*.java</include> 
      <include>src/main2/java/**/*.java</include> 
     </includes> 
     </configuration> 
     </plugin> 
    </plugins> 
</build> 
+16

नहीं इस तरह के एक अच्छा विचार IMHO, के बाद से कई प्लगइन्स मान 'sourceDirectory' - और संभवतः अतिरिक्त' sources' - स्रोत फ़ाइलों की जड़ों के रूप में। आपके समाधान में, 'मेवेन-कंपाइलर-प्लगइन' इन वास्तविक जड़ों से अवगत एकमात्र प्लगइन है। –

+3

@Laurent आप इसके बारे में सही हैं। यह दो साल पहले एक अच्छा विचार था लेकिन अब बहुत बेहतर विकल्प हैं। ऊपर सूचीबद्ध बिल्ड-हेल्पर मेरा पसंदीदा विकल्प है। – sal

+3

यह इसे प्रोजेक्ट मॉडल में नहीं जोड़ता है, इसलिए यह आईडीई में सही तरीके से काम नहीं करेगा। –

2

प्रयुक्त पद से निर्माण सहायक-Maven-प्लगइन - और अद्यतन src/मुख्य/उत्पन्न। और एमवीएन स्वच्छ संकलन मेरे ../common/src/main/java पर या ../common पर काम करता है, इसलिए बाद वाले को रखा गया। फिर हां, यह पुष्टि करते हुए कि संकलन के इंटेलिजे आईडीईए (वर्क 10.5.2) स्तर में विफल रहा क्योंकि डेविड फिलिप्स ने उल्लेख किया था। मुद्दा यह था कि आईडीईए ने परियोजना में एक और स्रोत रूट नहीं जोड़ा था। इसे जोड़कर मैन्युअल रूप से समस्या हल हो गई। यह अच्छा नहीं है क्योंकि परियोजना में कुछ भी संपादित करना मैवेन से आना चाहिए और आईडीईए के प्रोजेक्ट विकल्पों के सीधे संपादन से नहीं। फिर भी जब तक वे बिल्ड-हेल्पर-मैवेन-प्लगइन का समर्थन नहीं करते हैं, तब तक मैं इसके साथ रह सकूंगा ताकि यह स्रोतों को स्वतः जोड़ सके।

फिर इस काम को करने के लिए एक और कामकाज की आवश्यकता थी। चूंकि प्रत्येक बार आईडीईए ने एक पोम बदलने के बाद मैवेन सेटिंग्स को फिर से आयात किया है, इसलिए मुझे नया जोड़ा गया स्रोत मॉड्यूल पर रखा गया था, फिर भी यह स्रोत फ़ोल्डर्स चयन खो गया और बेकार था। तो के लिए विचार - इन एक बार की स्थापना की आवश्यकता:

  • का चयन करें - परियोजना सेटिंग्स/Maven/आयात कर रहा है/रखने के स्रोत और परीक्षण पुन: आयात पर फ़ोल्डरों।
  • जोड़ें - परियोजना संरचना/परियोजना सेटिंग्स/मॉड्यूल/{मॉड्यूल}/स्रोत/सामग्री रूट जोड़ें।

अब उन फ़ोल्डर्स को आयात पर रखना दुनिया में सबसे अच्छा अभ्यास नहीं है ..., लेकिन इसे आज़माएं।

+0

न तो विकल्प इंटेलिजे आइडिया 9.0.4 के साथ काम करता है जो मैं उपयोग करता हूं। हालिया ग्रहण के साथ बिल्ड-हेल्पर विकल्पों की कोशिश नहीं की है, लेकिन जब मैंने कोशिश की तो यह 3.4 और एम 2 प्लगइन के साथ काम नहीं किया। मेवेन को एक ही प्रोजेक्ट से बने कई स्रोत पेड़ या कई कलाकृतियों को पसंद नहीं है, इस सीमा के चारों ओर जाने का कोई भी प्रयास आमतौर पर एक भयानक हैक है। – sal

+0

कई वर्षों से इंटेलिजे पर रहा है। और कभी ग्रहण करने के लिए स्विच नहीं किया है, इसलिए इसके लिए बात नहीं कर सकते, फिर सुनना आम तौर पर बहुत अच्छा है। IntelliJ के लिए हर दूसरे वर्ष एक व्यक्तिगत लाइसेंस का उन्नयन $ 100/वर्ष है। जनवरी में हर साल नए प्रमुख संस्करण आम तौर पर बाहर होते हैं। फिर पिछले वर्ष के पिछले 2-3 महीनों में वे आपको पिछले संस्करण को खरीदने और आने वाले एक को अपग्रेड करने की इजाजत दे रहे हैं। यह अभी पर है इसलिए यह 10 खरीदने और 11 प्राप्त करने के लिए "सुरक्षित" समय है। इसके अलावा, यदि आपको जेएसपी और अन्य एंटरप्राइज़ सुविधाओं की आवश्यकता नहीं है, तो मुफ्त समुदाय संस्करण का उपयोग करें। – arntg

11

यह IntelliJ में काम करने के लिए, आप भी

<generatedSourcesDirectory>src/main/generated</generatedSourcesDirectory> 

maven-संकलक प्लगइन

+0

यह जोड़ना चाहेंगे कि यह ग्रहण में काम करता है और साथ ही प्रोजेक्ट कॉन्फ़िगरेशन में स्रोत स्रोत के रूप में जेनरेट किए गए स्रोतों को जोड़ना चाहता है। –

+0

हालांकि यह पथ एनोटेशन प्रोसेसर द्वारा उत्पन्न स्रोतों के लिए प्रतीत होता है। यहां तक ​​कि अगर यह काम करता है, तो यह संभव है कि इस पथ को कुछ प्लगइन द्वारा अलग तरीके से संभाला जा सके। उदाहरण के लिए, मुझे उम्मीद है कि 'क्लीन' चलने पर यह निर्देशिका हटा दी जा सकती है। – Kapep

1

यह दो चरणों में किया जा सकता है करने के लिए जोड़ सकते हैं:

  • प्रत्येक स्रोत निर्देशिका के लिए आपको अपना मॉड्यूल बनाना चाहिए। ${build.directory}

आप आरंभ जेट्टी (jetty:run), तो किसी भी मॉड्यूल में किसी भी वर्ग की रखता (Maven, विचार या ग्रहण के साथ) के साथ काम करते हैं को बढ़ावा मिलेगा:

  • सभी मॉड्यूल में आप एक ही निर्माण निर्देशिका निर्दिष्ट करना चाहिए जेटी का पुनरारंभ संशोधित संसाधनों के लिए आपको वही व्यवहार मिलेगा।

  • 11

    यह संसाधन टैग को परिभाषित करके मेवेन के साथ भी काम करता है। आप जो भी चाहें अपने src फ़ोल्डर नामों का नाम दे सकते हैं।

    <resources> 
         <resource> 
          <directory>src/main/java</directory> 
          <includes> 
           <include>**/*.java</include> 
           <include>**/*.properties</include> 
           <include>**/*.xml</include> 
          </includes> 
         </resource> 
    
         <resource> 
          <directory>src/main/resources</directory> 
          <includes> 
           <include>**/*.java</include> 
           <include>**/*.properties</include> 
           <include>**/*.xml</include> 
          </includes> 
         </resource> 
    
         <resource> 
          <directory>src/main/generated</directory> 
          <includes> 
           <include>**/*.java</include> 
           <include>**/*.properties</include> 
           <include>**/*.xml</include> 
          </includes> 
         </resource> 
        </resources> 
    
    +6

    http://maven.apache.org/pom.html# स्रोत -> 'संसाधन (आमतौर पर) कोड नहीं हैं। वे संकलित नहीं हैं – SJuan76

    +0

    यह सही है। – sendon1982

    43

    मैं भोलेपन यह इस तरह से कार्य करें:

    +0

    यह अभी भी काम कर रहा है? –

    +2

    मेरे लिए काम किया :) ग्रहण हालांकि ऐसा प्रतीत नहीं होता है। ऐसा लगता है कि "src/main/java, src/interfaces" एक एकल स्रोत है, और इसलिए इसे (गायब) के रूप में ध्वजांकित करता है। – Joel

    +0

    मैवेन 3.3.9 में मेरे लिए काम करता है !!! यह स्वीकार्य उत्तर होना चाहिए –

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