2010-11-05 8 views
12

में फ़िल्टरिंग स्रोत कोड मैंने एक छोटी बीनशेल स्क्रिप्ट लिखी है जो स्रोत कोड में वास्तविक पंक्ति संख्या के साथ "__LINE__" को प्रतिस्थापित करती है। यह चींटी में अच्छी तरह से काम करता है।मेवेन

मैवेन में स्रोत कोड फ़िल्टर करने का एक तरीका ढूंढ रहा हूं ताकि मेरी बीनशेल स्क्रिप्ट एक नई स्रोत कोड निर्देशिका उत्पन्न कर सके जो तब संकलित हो जाती है।

मुझे संसाधन फ़ाइल फ़िल्टरिंग के बारे में पता है। क्या स्रोत कोड के लिए कोई समान सुविधा है?

उत्तर

19

कुछ महीने पहले फ़िल्टरिंग स्रोत कोड अभी भी मुश्किल था, लेकिन अब MOJO प्रोजेक्ट में एक मानक प्लगइन है। अब आप क्लासिक प्लगइन घोषणा के साथ ऐसा कर सकते हैं।

स्रोत कोड फ़िल्टर करने के लिए (उदाहरण के लिए, जब आप प्रोजेक्ट संस्करण या artifactId को पुनर्प्राप्त करने के लिए अपने जावा कोड में निरंतर होना चाहते हैं), तो अब आपको templating-maven-plugin का उपयोग करना चाहिए।

  1. अपने कोड है कि src/main/java-templates के तहत निर्माण के दौरान फिल्टर किया जाना चाहिए के रूप में आप सामान्य रूप से स्रोतों गैर फ़िल्टर्ड के लिए src/main/java के तहत करना होगा रखो। ${project.version} या अपने कोड में पीओएम से आने वाली संपत्ति का उपयोग करें।

    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>templating-maven-plugin</artifactId> 
        <version>1.0-alpha-3</version> <!-- Be sure to use the last version. Check on the website's plugin --> 
        <executions> 
         <execution> 
         <id>filter-src</id> 
         <goals> 
          <goal>filter-sources</goal> 
         </goals> 
         </execution> 
        </executions> 
    </plugin> 
    
  2. :-) किया जाना:

  3. जैसा कुछ डाल दिया। आपके द्वारा डाला गया कोड src/main/java-templates फ़िल्टर किया जाता है और क्लासपाथ में जोड़ा जाता है।

उपयोग बहुत सरल है (example here देखें)।

यह मैवेन की कॉन्फ़िगरेशन पर सम्मेलन के विचार को बेहतर मानता है। कुछ मूल रूप से कुछ करने के लिए आप मूल रूप से एक्सएमएल लाइनों और कुछ हैक्स को बदल रहे हैं।

साइड नोट: उदाहरण के लिए ग्रहण के साथ यह ठीक काम करता है।

+0

हाय, मैंने उपरोक्त आपके उत्तर का पालन करने का प्रयास किया, लेकिन जब मैं ग्रहण-केप्लर में प्रोजेक्ट आयात करता हूं और ग्रहण के ऑटो-बिल्ड को सक्षम करता हूं, तो यह शिकायत करता है कि यह 'src/main/java-templates' src dir में कक्षाएं नहीं पा रहा है। ..इस प्रोजेक्ट स्रोत बिल्ड पथ को भी देख रहे हैं, 'src/main/जावा-टेम्पलेट्स' src dir वहां नहीं है ... सुनिश्चित नहीं है कि यह वहां होना चाहिए या नहीं। बस यह भी उल्लेख करने के लिए कि जब मैं ग्रहण से 'mvn install' चलाता हूं, तो प्रोजेक्ट सफलतापूर्वक बनाता है, लेकिन मैं ग्रहण करना चाहता हूं कि शिकायत न करें और इसे स्वचालित रूप से' लक्ष्य/जेनरेट-स्रोत/जावा-टेम्पलेट्स 'से संसाधित स्रोत चुनना चाहिए या शायद मैं' मैं गलत हूं? –

+1

src/main/java-templates स्रोत फ़ोल्डर नहीं है, और आईडीई के अंदर एक के रूप में कॉन्फ़िगर नहीं किया जाना चाहिए। ऐसा करने से लक्ष्य/जेनरेट-स्रोत/जावा-टेम्पलेट्स फ़िल्टर की गई निर्देशिका (जिसे ग्रहण में स्रोत फ़ोल्डर के रूप में दिखाना है, जिसे आप संपादित नहीं करना चाहिए) के साथ संघर्ष करेंगे। –

+1

ग्रहण के अंदर स्वचालित रीफ्रेश के लिए, मुझे लगता है कि आप कुछ M2E कॉन्फ़िगरेशन खो रहे हैं, https://mist.github.com/Batmat/9529785 को अपने pom.xml में जोड़ने का प्रयास करें। क्या यह बेहतर काम करता है? –