2012-12-20 38 views
7

मैं मेवेन में जांचना चाहता हूं यदि प्रॉपर्टी फ़ाइल से प्रमाणीकरण डेटा एप्लिकेशन परीक्षण के दौरान डेवलपर द्वारा प्रदान किया जाता है यदि एकीकरण-परीक्षण जीवन चक्र।मेवेन में जीवन चक्र/चरण और फ़ाइल अस्तित्व की जांच करें और रिपोर्ट त्रुटि

राज्य आम बात के रूप में यह स्रोत पेड़ से प्रमाणीकरण डेटा प्रतिबद्ध करने के लिए बुरा है। मानक मेवेन दृष्टिकोण settings such as username and password should not be distributed along with the pom.xml पर वर्णित है।

लेकिन मैं इस दृष्टिकोण (मैं प्रति देव मेजबान नहीं, चेकआउट सेटिंग्स प्रति चाहते हैं !!) की तरह है और VCS (SVN/GIT में src/पाठ/संसाधन/auth.properties.example प्रदान करना चाहते हैं नहीं है/एचजी) उदाहरण के रूप में और स्रोत/टेक्स्ट/संसाधन/auth.properties के अस्तित्व के लिए मेवेन में जांचने के लिए कोड बनाना चाहते हैं जो प्रति डेवलपर (या प्रति परियोजना चेकआउट !!) है, लेकिन केवल एकीकरण-परीक्षण चरण कहा जाता था (या एकीकरण-परीक्षण चरण के बाद कोई अन्य)। अगर किसी भी पिछले चरणों निष्पादित (तरह संकलन या परीक्षण) - यह जाँच करता है निष्क्रिय किया जाना चाहिए।

मेवेन चरण को स्थिरता की जांच करने के लिए डिज़ाइन किया गया चरण (introduction-to-the-lifecycle देखें)। लेकिन चरणों के लिए कोई जांच नहीं है !! इसलिए मैं प्री-इंटीग्रेशन-टेस्ट चरण का उपयोग करता हूं।

मैं काम कर कोड लिखें:

 
<?xml version="1.0" encoding="utf-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.mycompany.app</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 
    <name>my-app</name> 

    <profiles> 

    <profile> 
     <id>existent.properties</id> 
     <activation> 
     <file> 
      <missing>auth.properties</missing> 
     </file> 
     </activation> 
     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>run</goal> 
       </goals> 
       <configuration> 
        <target> 
        <echo>In order to run integration-text life-cycle:</echo> 
        <echo> 1) Rename 'auth.properties.example' into 'auth.properties'.</echo> 
        <echo> 2) Fill 'auth.properties' with your own authentification data.</echo> 
        <fail message="Can't find 'auth.properties'."/> 
        </target> 
       </configuration> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 

    </profiles> 

    <build> 

    <plugins> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.6</version> 
     <executions> 

      <execution> 
      <id>test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
       <echo>JUnit tests!</echo> 
       </target> 
      </configuration> 
      </execution> 

      <execution> 
      <id>integration-test</id> 
      <phase>integration-test</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
       <echo>Selenium tests!</echo> 
       </target> 
      </configuration> 
      </execution> 

     </executions> 
     </plugin> 

    </plugins> 

    </build> 

</project> 

लेकिन जीएनयू गुरु मैं कोड ऊपर नापसंद बनाने के रूप में। क्या मैं सही हू? क्या यह मेवेन का गलत उपयोग है?

उत्तर

2

आपका दृष्टिकोण ठीक है (अगर एक छोटे से अधिक-इंजीनियर IMHO - मैं सिर्फ बात उस तरह का एक README/परियोजना विकि में डाल चाहते हैं; निर्माण फ़ाइल बिना असफल करने के लिए जब एक प्रयास इसे पढ़ने के लिए किया जाता है चाहिए)

तुम भी antrun के बजाय लागू करने वाले के लक्ष्य तक पहुंचना चाहते हैं: http://maven.apache.org/enforcer/enforcer-rules/requireFilesExist.html

+0

** Maven-एनफोर्सर-प्लगइन के लिए लिंक के लिए धन्यवाद **! – gavenkoa