2014-05-06 10 views
5

हमारे पास एक बहु-मॉड्यूल मेवेन प्रोजेक्ट है, और इसमें जेबॉस 4 और जेबॉस 7 जैसे चलने के लिए अलग-अलग प्लेटफॉर्म हैं। हम platform प्रॉपर्टी निर्दिष्ट करते हैं, और फिर इसे एक के रूप में उपयोग करते हैं कलाकृतियों के लिए वर्गीकारक, और उप मॉड्यूल में मंच-विशिष्ट प्रोफ़ाइल के सक्रियण, जैसे के लिए:मैवेन: सब-मॉड्यूल में प्रोफाइल सक्रिय करने के लिए प्रॉपर्टी

<activation> 
    <property> 
     <name>platform</name> 
     <value>jboss71x</value> 
    </property> 
</activation> 
इन प्रोफाइल में

, हम अन्य बातों के अलावा, प्रदान की निर्भरता के संस्करण निर्दिष्ट करें। ईजी।

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.jboss.as</groupId> 
      <artifactId>jboss-as-parent</artifactId> 
      <version>${dependencies.jbossas7.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 

तो जब हम एक कमांड लाइन तर्क (-Dplatform=jboss71x) के रूप में संपत्ति निर्दिष्ट करते हैं, यह ठीक काम करता है: हम jboss माता पिता पोम के आयात करते हैं।

[ERROR]  'dependencies.dependency.version' for commons-lang:commons-lang:jar is missing. @ line 46, column 21 
[ERROR]  'dependencies.dependency.version' for commons-beanutils:commons-beanutils:jar is missing. @ line 56, column 21 
[ERROR]  'dependencies.dependency.version' for commons-collections:commons-collections:jar is missing. @ line 61, column 21 

Maven संस्करण:

लेकिन जब संपत्ति जड़ pom.xml में <properties> खंड में सेट किया गया है (मैं भी माता पिता पोम में यह स्थापित करने का प्रयास), माता पिता पोम से संस्करणों याद कर रहे हैं की तरह लग रहा नवीनतम है: 3.2.1।

ऐसा क्यों होता है, और हम कैसे pom.xml में इस संपत्ति के मूल्य निर्दिष्ट कर सकते हैं, कमांड लाइन में नहीं?

उत्तर

8

ओह, यह तुम क्या करने की कोशिश कर रहे क्या करना संभव नहीं है।

नोट केवल गुण Maven कमांड लाइन पर सेट प्रोफाइल सक्रिय कर सकते हैं: मैं Codehaus वेबसाइट पर this note खोजने से पहले एक ही बात का प्रयास कर रहा घंटे बिताए। पीओएम, पैरेंट पीओएम, या अन्य प्रोफाइल में सेट गुणों का कोई प्रभाव नहीं पड़ता है।

असल में, संपत्तियों का सक्रियण पीओएम प्रसंस्करण में बहुत जल्दी होता है, इससे पहले कि सभी गुणों को अलग किया जा सके। अनिवार्य रूप से इसका मतलब है कि प्रोफ़ाइल को सक्रिय करने वाली संपत्ति के निर्माण की शुरुआत में परिभाषित मूल्य होना चाहिए - एक सिस्टम प्रॉपर्टी के रूप में, कमांड लाइन पर - क्योंकि मैवेन से पहले प्रोफाइल सक्रियण होता है <properties> तत्व। एक समान स्टैक ओवरफ्लो प्रश्न में answer है जो अधिक जानकारी और पृष्ठभूमि दस्तावेज़ प्रदान करता है।

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