2012-07-16 16 views
54

में परिभाषित मेवेन गुणों का उपयोग करें, मैं सामान्य मेवेन प्रोजेक्ट में और मेवेन प्लगइन प्रोजेक्ट में पोम में परिभाषित मेवेन गुणों का उपयोग कैसे करूं?पोम

+1

किस प्रकार की जानकारी आप में रुचि रखते हैं? यदि यह केवल संस्करण या समान चीजें हैं, तो शायद यह एक बेहतर विचार है [इसे प्रकट में रखें और इसे वहां से पढ़ें] (http://stackoverflow.com/questions/2712970/how-to-get-maven-artifact- संस्करण-एट-क्रम/2713013 # 2713013)। –

+0

इस बारे में स्टैक ओवरफ़्लो में बहुत सी पोस्ट है: http://stackoverflow.com/search?q=read+pom+in+java, कम से कम, पोस्ट से पहले एक नज़र डालें। SO संपादित करें मददगार उन्हें दिखाना चाहिए। Google भी –

+0

धन्यवाद दोस्तों। अब मुझे एहसास है कि यह वास्तव में बुरा अभ्यास है। अन्य दृष्टिकोण की कोशिश करेंगे। –

उत्तर

0

आप जेएमओएम (http://www.jdom.org/) के साथ पोम फ़ाइल को पार्स कर सकते हैं।

6

Maven पहले से ही तुम क्या चाहते करने के लिए एक समाधान है:

Get MavenProject from just the POM.xml - pom parser?

Btw: पहले गूगल खोज पर मारा;)

Model model = null; 
FileReader reader = null; 
MavenXpp3Reader mavenreader = new MavenXpp3Reader(); 

try { 
    reader = new FileReader(pomfile); // <-- pomfile is your pom.xml 
    model = mavenreader.read(reader); 
    model.setPomFile(pomfile); 
}catch(Exception ex){ 
    // do something better here 
    ex.printStackTrace() 
} 

MavenProject project = new MavenProject(model); 
project.getProperties() // <-- thats what you need 
+1

सिंगल-लिंक उत्तर यहां निराश होते हैं (अधिकांशतः क्योंकि जब जुड़े हुए संसाधन दूर हो जाते हैं तो वे बेकार हो सकते हैं)। आपको कम से कम यहां से पोस्ट की गई जानकारी से जानकारी सारांशित करनी चाहिए। –

+0

मैंने गलती से गलत लिंक पोस्ट किया है, यह एक स्टैक ओवरफ्लो पोस्ट है, जो दूर नहीं जाना चाहिए;) – SWoeste

+0

लेकिन मैं आपको श्वेत मानता हूं, सिर्फ एक लिंक थोड़ा अप्रिय है। तो लिंक से स्रोत के आधार पर मैंने कुछ टिप्पणियां और विधि कॉल जो आप खोज रहे हैं (अंतिम पंक्ति)। – SWoeste

4

इस संयोजन में मानक जावा गुणों के साथ किया जा सकता है गुणों पर सक्षम फ़िल्टरिंग के साथ maven0-resource-plugin के साथ। अधिक जानकारी के लिए देख

http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

प्लगइन के लिए के रूप में परियोजनाओं

15

एक System variable from Maven और जावा उपयोग में following call

System.getProperty("Key"); 
+0

टूटी हुई लिंक, क्या आप इसे ठीक कर सकते हैं? –

+0

टूटी हुई लिंक फिक्स्ड। – Santosh

+5

यह केवल तभी काम करेगा यदि आप मेवेन से परिणामस्वरूप निर्माण चला रहे हैं, शायद मैवेन-एक्जिक-प्लगइन का उपयोग कर रहे हैं। यदि आप कोड को संकलित करने के लिए केवल मेवेन का उपयोग कर रहे हैं, तो यह काम नहीं करेगा। –

46

उपयोग properties-maven-plugin सेट अप को लिखने के लिए यह मानक Maven परियोजना के लिए काम करेंगे संकलन समय पर एक फ़ाइल में विशिष्ट पोम properties, और उसके बाद उस फ़ाइल को रन टाइम पर पढ़ें।

अपने pom.xml में:

<properties> 
    <name>${project.name></name> 
    <version>${project.version}</version> 
    <foo>bar</foo> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <executions> 
       <execution> 
        <phase>generate-resources</phase> 
        <goals> 
         <goal>write-project-properties</goal> 
        </goals> 
        <configuration> 
         <outputFile>${project.build.outputDirectory}/my.properties</outputFile> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

और फिर जावा में:

java.io.InputStream is = this.getClass().getResourceAsStream("my.properties"); 
java.util.Properties p = new Properties(); 
p.load(is); 
String name = p.getProperty("name"); 
String version = p.getProperty("version"); 
String foo = p.getProperty("foo"); 
+0

यह काम करता है, लेकिन ग्रहण ** अनंत निर्माण/तैनाती-टू-टॉमकैट लूप ** में बनता है (बिल्ड -> my.properties जेनरेट करें -> संसाधन बदल गया -> बिल्ड), इसलिए मुझे चरण को 'संकलन' में बदलना पड़ा। सुनिश्चित नहीं है कि यह उचित समाधान है या नहीं। –

+0

@atoregozh ने गुण फ़ाइल लोड करने के बजाय गुवा संसाधन का उपयोग करने का सुझाव दिया। ठीक। लेकिन इस उदाहरण को मानक API के साथ न्यूनतम रखने के लिए परिवर्तन को वापस कर दिया। –

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