2012-03-28 11 views
16

मैं निम्नलिखितMaven - एक बाहरी गुणों से एक संपत्ति फ़ाइल को पढ़ने

junit.version=3.8.1 
dbcp.version=5.5.27 
oracle.jdbc.version=10.2.0.2.0 

मैं अपने पोम फ़ाइल से उन गुणों पढ़ने की कोशिश के साथ एक संपत्ति फ़ाइल को निम्न

<dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>${junit.version}</version> 
    <scope>test</scope> 
</dependency> 


<dependency> 
    <groupId>dbcp</groupId> 
    <artifactId>dbcp</artifactId> 
    <version>${dbcp.version}</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>com.oracle</groupId> 
    <artifactId>ojdbc14</artifactId> 
    <version>${oracle.jdbc.version}</version> 
    <scope>provided</scope> 
</dependency> 

और दिखाया गया है प्लगइन विन्यास

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>properties-maven-plugin</artifactId> 
     <executions> 
      <!-- Associate the read-project-properties goal with the initialize phase, to read the properties file. --> 
      <execution> 
      <phase>initialize</phase> 
      <goals> 
       <goal>read-project-properties</goal> 
      </goals> 
      <configuration> 
       <files> 
       <file>../live.properties</file> 
       </files> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 

मुझे लगता है कि जब मैं चलाने mvn स्वच्छ इसे स्थापित गुण नहीं मिल रहा है, बजाय इसे वाई आता है वें निम्न त्रुटियों:

'dependencies.dependency.version' for junit:junit:jar must be a valid version but is '${junit.version}'. @ line 23, column 16 
'dependencies.dependency.version' for dbcp:dbcp:jar must be a valid version but is '${dbcp.version}'. @ line 31, column 12 
'dependencies.dependency.version' for com.oracle:ojdbc14:jar must be a valid version but is '${oracle.jdbc.version}'. @ line 37, column 13 

ऊपर विफलताओं स्थितियों में होने के लिए मैं कहाँ संपत्ति का उल्लेख जब मैं निर्भरता की घोषणा दिखाई देते हैं। मैंने पाया कि कुछ अन्य स्थितियों में संपत्ति फ़ाइल से पढ़ी जाती है। उदाहरण के लिए यह काम करता है अगर मैं प्रोजेक्ट वर्जन टैग (निर्भरता संस्करण नहीं) पर एक संपत्ति का उपयोग करता हूं

ऐसा लगता है कि संपत्ति को फ़ाइल से नहीं पढ़ा जाता है अगर इसे निर्भरता घोषणा से संदर्भित किया जाता है लेकिन इसे पढ़ा जाता है कहीं और से। कोई विचार?

+0

एक अलग फाइल में उन लोगों के संस्करण होने की बात क्या है? – artbristol

+0

मैं उस प्रॉपर्टी फ़ाइल को किसी अन्य प्रोजेक्ट के साथ साझा कर रहा हूं जो संस्करणों का उपयोग करके युद्ध ओवरले बनाता है। – ziggy

उत्तर

12

initialize चरण clean lifecycle का हिस्सा नहीं है। आपको pre-clean चरण में अपनी गुण प्लगइन को बाध्य करने की आवश्यकता है।

हालांकि, निर्भरता संकल्प अन्य प्लगइन को हल करने और निष्पादित करने से पहले चलता है, इसलिए आपका दृष्टिकोण काम नहीं करेगा।

इससे निपटने का सही तरीका निर्भरता संस्करणों को पैरेंट pom.xml में ले जाना होगा और अपनी दोनों परियोजनाओं में एक ही पेरेंट पोम का उपयोग करना होगा।

+0

मुझे यह सुनिश्चित करने के लिए किस चरण का उपयोग करना चाहिए कि गुण mvn कमांड के संबंध में लोड किए गए हैं? – ziggy

+0

मैंने पहले ही इसका उत्तर दिया है। एमवीएन क्लीन कमांड अलग-अलग जीवन चक्र का उपयोग कर रहा है जिसमें डिफ़ॉल्ट जीवन चक्र (जैसे एमवीएन पैकेज या एमवीएन इंस्टॉल) से पूरी तरह से अलग चरण हैं। कृपया मेरे उत्तर से दस्तावेज़ीकरण के लिंक का पालन करें। –

+0

क्या आपका मतलब कुछ ऐसा है? प्री-क्लीन, ziggy

1

यू इस तरह परिभाषित कर सकते हैं:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <executions> 
       <execution> 
       <id>pre-clean-config</id> 
        <phase>pre-clean</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
       <execution> 
       <id>initialize-config</id> 
        <phase>initialize</phase> 
        <goals> 
         <goal>read-project-properties</goal> 
        </goals> 
        <configuration> 
         <files> 
          <file>config.properties</file> 
         </files> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
संबंधित मुद्दे