2012-06-15 12 views
17

में केवल चयनित फ़ाइलों को संकलित करना मैं स्रोत निर्देशिका के भीतर केवल चयनित फ़ाइलों या निर्देशिकाओं (उपनिर्देशिका सहित) संकलित करना चाहता हूं। मुझे पूरा यकीन था कि maven-compiler-plugin की कॉन्फ़िगरेशन के <includes> का उपयोग करके मैं यह कर सकता हूं, लेकिन ऐसा लगता है कि यह उम्मीद नहीं है क्योंकि यह अभी भी सभी कक्षाओं को target/classes में संकलित करता है। क्या वास्तव में अजीब बात है, Maven उत्पादन, सुझाव है क्योंकि साथ उस सेटिंग वास्तव में अपने काम करता है:मेवेन

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.5.1</version> 
    <configuration> 
     <includes> 
     <include>com/example/dao/bean/*.java</include> 
     </includes> 
    </configuration> 
    </plugin> 

मेरे पास है:

[INFO] Compiling 1 source file to c:\Projects\test\target\classes 

लेकिन कोई संकलक के विन्यास के साथ मेरे पास है:

[INFO] Compiling 14 source file to c:\Projects\test\target\classes 

हालांकि, दोनों मामलों में, सभी 14 वर्गों को target/classes में संकलित किया गया है जैसा मैंने उल्लेख किया है। क्या आप इसे समझा सकते हैं या केवल चयनित फाइलों को संकलित करने के लिए एक और समाधान सुझा सकते हैं?

+0

क्या आपको इसका परीक्षण करने से पहले साफ करना याद था? – artbristol

+0

क्या आपने पहले **/* को छोड़ने का प्रयास किया है? मुझे लगता है कि डिफ़ॉल्ट मेवेन में सब कुछ शामिल है और आपको बाहर करना होगा। क्या आप एक मौका (जैसे ग्रहण) द्वारा सेट किए गए "ऑटोबॉल्ड" विकल्प के साथ एक आईडीई का उपयोग कर रहे हैं? – mschonaker

+0

हां, मैं संकलन से पहले साफ करता हूं। हां, मैंने '**/*। जावा 'को उजागर करने की कोशिश की। मैं इस बार आईडीई का उपयोग नहीं करता हूं। बस सादे 'pom.xml' और कंसोल। –

उत्तर

22

3 कक्षाओं के साथ सरल ऐप।

com/company/Obj1.java 
com/company/Obj2.java 
com/company/inner/Obj3.java 

buildpom.xml

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.0.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <includes> 
        <include>com/company/inner/*.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
      </plugins> 

    </build> 

में परिणाम: 1 वर्ग संकलित किया गया है।
और इसमें शामिल किसी भी संयोजन अच्छी तरह से काम कर रहा है
या आप कुछ और मतलब है?

+1

ओएमजी में संकलित किया गया है! काम करता है! लेकिन संकलक के संस्करण 2.0.2 के साथ! संस्करण 2.5.1 और 2.3.2 अनदेखा में शामिल हैं और बहिष्कृत हैं। ऐसा लगता है कि हमें यहां एक बग मिला। –

+6

कंपाइलर का संस्करण 2.1 वह आखिरी है जिसके साथ यह काम करता है। –

+0

दिलचस्प ... मैंने जो लिखा है वह मेरे मामले (मेरे मॉड्यूल) में सच है, लेकिन आम तौर पर, @ इलिया के उदाहरण की तरह ही सरल परियोजना के साथ, 'मेवेन-कंपाइलर-प्लगइन' के नए संस्करण के साथ भी कोई समस्या नहीं है। ऐसा लगता है कि मेरे मॉड्यूल के 'pom.xml' में कुछ है या माता-पिता के पदानुक्रम में कुछ है (कुछ है)। मैं अपने मामले की जांच करने और वास्तव में गलत क्या जवाब खोजने की कोशिश करूंगा। अगर यह वास्तव में मेवेन कंपाइलर के साथ कुछ समस्या है, तो मैं उनके लिए जेरा टिकट तैयार करूंगा। –

0

मुझे मेवेन कंपाइलर प्लगइन 2.5.1 के साथ संकलन के लिए फ़ाइलों को शामिल या बहिष्कृत करने में कोई कठिनाई नहीं थी। Here डमी परियोजना है जिसे मैंने उद्देश्य के लिए उपयोग किया था। शायद include पैटर्न जो आप उपयोग करते हैं वह अलग है।

0

एंटी-जैसे समावेशन/बहिष्करण नोटेशन का उपयोग करके मेवेन-कंपाइलर-प्लगइन। आप चींटी प्रलेखन Ant FileSet Type

में उदाहरण देख सकते हैं आप एक निर्देशिका से उन फ़ाइलों को शामिल करना चाहता हूँ रहे हैं, तो आप इसे लिखते जरूरत है जैसे आप ने क्या किया:

<include>com/example/dao/bean/*.java</include> 

भी पथ से उपनिर्देशिका में शामिल हैं के लिए, यह हो जाएगा:

<include>com/example/dao/bean/**/*.java</include>