2011-10-26 12 views
6

मैं जुनीट 4.8.1 के साथ मेवेन 3.0.3 का उपयोग कर रहा हूं। मेरे जुनीट टेस्ट में, मैं प्रोजेक्ट को कैसे पढ़ूं .artifactId को मेरी मेवेन pom.xml फ़ाइल में परिभाषित किया गया है? मेरी पोम में, मैंजुनीट परीक्षण से मेवेन गुण कैसे पढ़ा जाए?

<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.myco.pplus2</groupId> 
<artifactId>pplus2</artifactId> 

है लेकिन इस "artifactId: अशक्त" विरूपण साक्ष्य आईडी गेटे करने के लिए अपने JUnit परीक्षण के भीतर काम नहीं कर रहा ...

@Before 
public void setUp() { 
    ...   
    System.out.println("artifactId:" + System.getProperty("project.build.sourceEncoding")); 
} // setUp 

ऊपर आउटपुट। वैसे भी, किसी भी मदद की सराहना करते हैं, - डेव

+0

की संभावित डुप्लिकेट में वर्णित प्रदर्शन [कैसे एक JUnit परीक्षण के अंदर Maven गुण पुनः प्राप्त करने के?] (http://stackoverflow.com/questions/247346/how-to-retrieve-maven-properties-inside-a-junit-test) – approxiblue

उत्तर

5

सुनिश्चित करने के लिए systemPropertyVariables (और दोस्तों) को देखें। यह वही करता है जो आप चाहते हैं। AFAIK उन्हें सूचीबद्ध किए बिना सभी मैवेन गुणों को पारित करने का कोई तरीका नहीं है।

9

मेवेन प्रोजेक्ट गुण स्वचालित रूप से जावा सिस्टम गुणों में नहीं जोड़े जाते हैं। यह हासिल करने के लिए कि कुछ विकल्प हैं। इस विशिष्ट आवश्यकता के लिए आप maven-surefire-plugin (एक चल रहे परीक्षण) के लिए सिस्टम प्रॉपर्टी को परिभाषित कर सकते हैं और फिर System.getProperty विधि का उपयोग कर सकते हैं।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.10</version> 
    <configuration> 
     <systemProperties> 
      <property> 
       <name>projectArtifactId</name> 
       <value>${project.artifactId}</value> 
      </property> 
     </systemProperties> 
    </configuration> 
</plugin> 

जुनीट परीक्षणों में मेवेन गुण प्राप्त करने के लिए अन्य तरीका संभवतः परीक्षण स्रोत फ़ाइलों के लिए संसाधन फ़िल्टरिंग होगा।

पीएस। रनटाइम पर मेवेन कॉन्फ़िगरेशन पढ़ना, यहां तक ​​कि परीक्षणों में भी बहुत गंदे IMHO है। :)

+1

सिस्टम सिस्टम के बजाय सिस्टमप्रॉपर्टी वैरिएबल का उपयोग करें (बहिष्कृत) –

0

कभी कभी, ग्रहण परियोजना के लिए जावा बिल्डर का उपयोग करना> (सही क्लिक-> परियोजना> गुण> बिल्डर्स) स्वचालित रूप से निर्माण

अगर इस तरह के मामले में होता है, कभी कभी संसाधन फिल्टरिंग नहीं करता है कॉन्फ़िगर किया गया है काम नहीं करता आपके पास कई विकल्प हैं:

  1. उपरोक्त के रूप में pom.xml फ़ाइल में संपत्ति प्रदान करें।
  2. एक गुण फ़ाइल प्रदान करें और Maven संसाधन छानने
  3. उपयोग Maven Invoker

2 और 3 http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

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