2009-08-24 17 views
32

निष्पादित करते समय क्लासपाथ में निर्देशिका जोड़ें मेरी परियोजना में जूनिट्स को क्लासपाथ से संपत्ति फ़ाइलों को लोड करने की आवश्यकता है। मैं उन प्रॉपर्टी फ़ाइलों की निर्देशिका कैसे निर्दिष्ट कर सकता हूं ताकि मैवेन परीक्षण चलाने से पहले क्लासपाथ में सेट कर सकें?मेवेन - परीक्षण

उत्तर

30

आप अतिरिक्त परीक्षण-संसाधन निर्देशिका निर्दिष्ट करने के लिए build-helper-maven-plugin का उपयोग कर सकते हैं। नीचे दिए गए विन्यास का प्रयोग, परीक्षण संसाधन निर्देशिका की सामग्री उत्पन्न परीक्षण-स्रोतों के दौरान लक्ष्य/परीक्षण वर्गों निर्देशिका में कॉपी किया जायेगा चरण:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
    <execution> 
     <id>add-test-resource</id> 
     <phase>generate-test-sources</phase> 
     <goals> 
     <goal>add-test-resource</goal> 
     </goals> 
     <configuration> 
     <resources> 
      <resource> 
      <directory>path/to/additional/test/resources</directory> 
      <excludes> 
       <exclude>**/folder-to-exclude/**</exclude> 
      </excludes> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+4

यह कार्यात्मक रूप से कोई फर्क नहीं पड़ता, लेकिन क्रमिकता के लिए, चरण उत्पन्न नहीं होना चाहिए जनरेट-टेस्ट-स्रोतों के बजाय स्रोत? – thSoft

23

तुम सिर्फ अपनी संपत्ति डाल करने के लिए चाहते हैं डिस्क पर फ़ाइलों किसी ऐसे स्थान पर और निर्माण के दौरान लक्षित करने के लिए/परीक्षण वर्गों उन संपत्ति फ़ाइलों की प्रतिलिपि नहीं करना चाहते, तो आप इसे इस तरह से कर सकते हैं

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <additionalClasspathElements> 
     <additionalClasspathElement>/add/this/to/path</additionalClasspathElement> 
    </additionalClasspathElements> 
    </configuration> 
</plugin> 
+1

दुर्भाग्य से, ग्रहण से परीक्षण चलाते समय m2e Surefire की कॉन्फ़िगरेशन नहीं उठाता है। बहुत बुरा क्योंकि यह बिल्ड-हेल्पर-मैवेन-प्लगइन के एड-टेस्ट-रिसोर्स लक्ष्य से थोड़ा सा सरल है। – thSoft

7

क्यों न सिर्फ test/resources का उपयोग करें और से classpath में अपनी संपत्ति जगह उस बिंदु पर। वे केवल परीक्षण चरण के लिए वहां होंगे।

+1

एक में केवल एक ऐसा फ़ोल्डर है, लेकिन अक्सर एक से अधिक परीक्षण वातावरण। – 30thh

+0

मैवेन प्रोफाइल देखें, मेरे दोस्त। –

4

यदि आपके पास एकाधिक संसाधन वातावरण हैं तो आप मैवेन प्रोफाइल का उपयोग कर सकते हैं और अपने विभिन्न संसाधनों को प्रोफ़ाइल के अनुसार डाल सकते हैं।

test/resources/uat 
test/resources/prod 
test/resources/dev 

लेकिन आमतौर पर अगर आप की जरूरत है कि आप एकीकरण परीक्षण कर रहे हैं तो आप का निर्माण सहायक-Maven-प्लगइन की जरूरत नहीं है।

1

maven-resources-plugin में copy-resources लक्ष्य है जो आपको संसाधनों की प्रतिलिपि बनाने की अनुमति देगा।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.6</version> 
    <executions> 
     <execution> 
     <id>additional-resources</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.testOutputDirectory}</outputDirectory> 
      <resources> 
      <resource> 
       <directory>${project.basedir}/conf</directory> 
      </resource> 
      </resources> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

यह target/test-classes फ़ोल्डर में अपनी परियोजना के आधार में conf फ़ोल्डर की सामग्री को कॉपी करेंगे (जब तक आप project.build.testOutputDirectory संशोधित) जो अपने इकाई परीक्षण के दौरान classpath में जोड़ दिया जाएगा: उदाहरण के लिए ।

23

आप नए परीक्षण संसाधन फ़ोल्डर्स भी जोड़ सकते हैं।

<build> 
    <testResources> 
     <testResource> 
      <directory>${project.basedir}/src/test/resources</directory> 
     </testResource> 
     <testResource> 
      <directory>${project.basedir}/src/test/something_else</directory> 
     </testResource> 
    </testResources> 
</build> 

पहला पथ, src/test/resources, डिफ़ॉल्ट है। मान लीजिए कि आप अभी भी डिफ़ॉल्ट पथ का उपयोग करना चाहते हैं, सुनिश्चित करें कि इसमें शामिल है। (testResources टैग आपके डिफ़ॉल्ट को ओवरराइट करता है, इसलिए यदि आप डिफ़ॉल्ट पथ को स्पष्ट रूप से शामिल नहीं करते हैं, तो इसका उपयोग बंद हो जाएगा।)

+0

यह मेरे लिए काम किया। डिफ़ॉल्ट की आवश्यकता को इंगित करने के लिए +1। –

+2

वही है जो मैं खोज रहा था, धन्यवाद! स्वीकार्य 'बिल्ड-हेल्पर-मेवेन-प्लगइन' समाधान से काफी आसान है। ऐसा करने के लिए किसी और के लिए एक अच्छा तरीका ढूंढने के लिए, ' ... 'निर्माण को आपके मैवेन प्रोफाइल में भी जोड़ा जा सकता है, उदा। यदि आप अलग-अलग वातावरण (स्थानीय/देव/परीक्षण/प्रोड) के लिए विभिन्न संसाधन निर्दिष्ट करना चाहते हैं। –

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