2012-04-05 15 views
10

मैंने देखा है कि जब आप प्रॉपर्टी फ़िल्टरिंग को फ़िल्टर करने वाली संपत्ति का उपयोग करने के लिए मेवेन प्रोजेक्ट को कॉन्फ़िगर करते हैं तो यह एक गैर-मैवेन इंटेलिजे "मेक" के दौरान भी काम करता है। इसका मतलब जेटी/टोमकैट/जीडब्ल्यूटी/ग्लासफ़िश के लिए इंटेलिजे रन कॉन्फ़िगरेशन अभी भी आपके मैवेन रिसोर्स फ़िल्टरिंग का सम्मान करेगा।इंटेलिजे के मेवेन फ़िल्टरिंग समर्थन का काम कैसे करता है?

तो मैं अपने pom.xml में जोड़ना है, तो:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
       <include>**/persistence.xml</include> 
      </includes> 
     </resource> .... 

यह किसी भी IntelliJ रन विन्यास शुरू करने से पहले मेरी गुण और peristence.xml फ़ाइलों में किसी भी गुण फ़िल्टर करना चाहिए। जेडीबीसी संदर्भ या फाइल सिस्टम पैरामीटर में स्वैपिंग के लिए यह बहुत उपयोगी है।

मेरी एकमात्र समस्या यह है कि IntelliJ केवल src/main/संसाधनों में फ़िल्टरिंग का सम्मान करता है, भले ही मैं pom.xml को अन्य निर्देशिकाओं (यानी: src/integrationtest/संसाधन) के लिए दूसरी प्रविष्टि के लिए बदलूं।

यह सब "स्वचालित" लगता है। तो यह कैसे काम करता है और कहां (यदि कहीं भी) मैं इसे कॉन्फ़िगर कर सकता हूं?

उत्तर

2

इंटेलिजे आईडीईए की मेक विशेषताएं मैवेन संसाधनों को फ़िल्टर करने में सक्षम हैं। हालांकि, IntelliJ IDEA अभी तक फ़िल्टरिंग वेब संसाधनों का समर्थन नहीं करता है।

स्रोत: http://www.jetbrains.com/idea/webhelp/maven.html#compile
हालांकि पूरे IntelliJ webhelp में इस समर्थन के बारे में कोई अन्य विवरण है, तो मुझे लगता है कि यह काम करना चाहिए Maven की प्रक्रिया-संसाधनों चरण की तरह ही है।

आपके द्वारा होने वाली समस्याएं इस तथ्य के कारण हो सकती हैं कि निर्देशिका src/integrationtest/resources मैवेन सम्मेलनों का पालन नहीं करती है। लेकिन

  • src/integrationtest परीक्षण स्रोत के रूप में सम्मान करने के लिए यह src/test/resources/integrationtest/

या

  • कॉन्फ़िगर Maven (नहीं जाने-माने अगर integrationtest है यह सम्मेलन: शायद यह कार्य करेगा जब आप मेवेन के सीओसी नियम का उल्लंघन होगा)

या

  • यह एक और Maven (उप) मॉड्यूल बनाने के लिए, अगर आप को छानने निर्देशिका कि src/main/resources अलग के लिए integrationtest

के रूप में के अलगाव पर जोर देना चाहते हैं: छानने src/main/webapp/META-INF मेरे लिए बाहर के एक बॉक्स में काम किया।
(Maven 3.0.4, Intellij 12.1.4)

2

अच्छी खबर है, लग रहा है अंक में 13,1

http://youtrack.jetbrains.com/issue/IDEA-25934

संपादित ठीक किया जाएगा की तरह: क्षमा करें यदि पर्याप्त स्पष्ट नहीं, बग मामला है अभी "फिक्स्ड" के रूप में चिह्नित नहीं किया गया है ... लेकिन मैंने 13.1 ईएपी संस्करण (134.1445 का निर्माण) में परीक्षण किया और पहले इंटेलिजे संसाधनों को ओवरराइट कर देगा, अब यह मैवेन द्वारा फ़िल्टर किए गए वेब संसाधनों को संरक्षित करता है।

+0

द्वारा मेरे लिए मुद्दा विचार-25,934 काम करता है में समाधान जोड़ना WEB-INF marstone

-1

एक डिफ़ॉल्ट प्रोफ़ाइल

<profiles> 
    <profile> 
     <id>development</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile> 
</profiles> 
0

Intellij (मैं 14.1 उपयोग कर रहा हूँ) आप विरूपण साक्ष्य निर्माण के दौरान पूर्व/पोस्ट-प्रोसेसिंग के रूप में कस्टम चींटी कार्यों को परिभाषित करने की अनुमति नहीं है परिभाषित करने के लिए मत भूलना।

परियोजना संरचना पर जाएं -> कलाकृतियों -> {आर्टिफैक्ट का चयन करें} -> {प्री-प्रोसेसिंग | पोस्ट प्रोसेसिंग} टैब।

तो, उदाहरण के लिए, मैं निम्नलिखित सरल कार्य मामलों में संसाधन छानने अनुकरण करने के लिए उपयोग कर सकते हैं, जहां यह बॉक्स से बाहर काम नहीं करता:

<target name="filter" depends="clean"> 
    <copy todir="${maven.build.dir}/${maven.build.finalName}"> 
     <fileset dir="${maven.build.resourceDir.0}"/> 
     <filterset begintoken="${" endtoken="}"> 
      <filter token="project.version" value="${project.version}"/> 
     </filterset> 
    </copy> 
</target> 
संबंधित मुद्दे