2011-09-26 10 views
14

मैंने मैवेन प्लगइन से संपत्ति को सेट करने के तरीके के बारे में कुछ प्रश्न यहां पढ़े हैं (उनमें से अधिकांश ने एप्लिकेशन के लिए संस्करण संख्या के बारे में बात की है)। ऐसा लगता है कि ऐसा करने का कोई आसान तरीका नहीं है और मुझे मिला सबसे अच्छा समाधान एक filter.properties फ़ाइल है जो प्लगइन से अद्यतन किया गया है और वांछित संसाधनों को फ़िल्टर करने के लिए मुख्य पोम फ़ाइल द्वारा उपयोग किया जाता है।प्लगइन से मेवेन प्रॉपर्टी सेट करें

मैं एक और समाधान की कोशिश की बाद मैं Maven प्रलेखन (Maven filter plugin) से इस पढ़ें:

चर अपने संसाधनों में शामिल किया जा सकता है। ये चर, $ {...} delimiters द्वारा को इंगित किया गया है, सिस्टम गुणों से, आपके प्रोजेक्ट गुणों से, आपके फ़िल्टर संसाधनों से और कमांड लाइन से आ सकता है।

मुझे दिलचस्प लगता है कि विविधता सिस्टम गुणों से पढ़ी जा सकती है। तो, मैं अपने प्लगइन संशोधित इस तरह की एक प्रणाली स्थापित करने के लिए संपत्ति:

System.setProperty("currentVersion", appCurrentVersion); 

हालांकि, यदि फ़िल्टर संसाधनों इस मूल्य को पढ़ने के लिए नहीं है। क्या कोई मुझे बता सकता है कि इस दृष्टिकोण के साथ क्या गलत है?

अपडेट: मैं में अपनी प्लगइन चला रहा हूं चरण मान्य करें।

बहुत बहुत धन्यवाद।

उत्तर

18

सिस्टम संपत्ति के रूप में सेट मत करो, Maven परियोजना संपत्ति के रूप में सेट

// inject the project 
/** @parameter default-value="${project}" */ 
private org.apache.maven.project.MavenProject project; 

// and in execute(), use it: 
project.getProperties().setProperty("currentVersion", appCurrentVersion); 

देखें:

+0

बिल्कुल सही! बहुत बहुत धन्यवाद, शॉन। – PaquitoSoft

3

मेवेन initialize phase में गुण सेट करता है। मुझे लगता है कि उस चरण में मैवेन सिस्टम गुण लोड करता है। और उसके बाद उस मेवेन सिस्टम गुणों को फिर से लोड नहीं करता है। यदि आप इस चरण के बाद लोड नहीं होने के बाद सिस्टम प्रॉपर्टी जोड़ने का प्रयास करते हैं।

validate phase में अपनी प्लगइन चलाने का प्रयास करें।

+0

मैं पहले से ही चल रहा हूँ मान्य चरण में प्लगइन। क्षमा करें मैंने पहले इसका जिक्र नहीं किया था। – PaquitoSoft

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