2013-02-01 12 views
12

मैं एक अभिभावक पोम लिखने की कोशिश कर रहा हूं, और मेरे पास एक प्लगइन परिभाषित है, लेकिन मुझे सभी विरासत उदाहरणों के लिए कॉन्फ़िगरेशन बदलने की आवश्यकता है। इसलिए, मैं <pluginManagement> परिभाषा में कुछ कॉन्फ़िगरेशन डाल सकता हूं, और मैं इसे <plugin> में ओवरराइड कर सकता हूं, लेकिन मैं बच्चों को <pluginManagement> संस्करण में डिफ़ॉल्ट रूप से कैसे प्राप्त करूं?मेवेन माता-पिता/बाल प्लगइन कॉन्फ़िगरेशन विरासत के साथ संघर्ष

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version> 
       <executions...> 
       <configuration> 
        <configLocation> 
         (used by all children) 
        </configLocation> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <configuration> 
       <configLocation> 
        (unique to the parent) 
       </configLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
<build> 

तो, बच्चों के माता-पिता को कॉन्फ़िगर करना जारी रखना क्या होता है।

उत्तर

12

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

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <!-- Main declaration of the plugin --> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.9.1</version> 
       <executions> 
        <execution> 
         <!--This must be named--> 
         <id>checkstyle</id> 
         <phase>compile</phase> 
         <goals> 
          <goal>check</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration...> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
    <plugins> 
     <plugin> 
      <!-- Uses the default config --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <inherited>false</inherited> 
      <executions> 
       <execution> 
        <!--This matches and thus overrides--> 
        <id>checkstyle</id> 
        <phase>none</phase> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
7

आप स्पष्ट रूप से अपने माता-पिता पोम में निर्दिष्ट कर सकते हैं कि प्लगइन विरासत में मिला नहीं किया जाना चाहिए:

<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.9.1</version> 
      <executions...> 
      <configuration> 
       <configLocation> 
        (used by all children) 
       </configLocation> 
      </configuration> 
     </plugin> 
    </plugins> 
</pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <inherited>false</inherited>      <!-- Add this line --> 
     <configuration> 
      <configLocation> 
       (unique to the parent) 
      </configLocation> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

और अपने बच्चे को पोम में, आप (config तो <pluginManagement> पेरेंट तत्व से आएगा प्लगइन निर्दिष्ट करने की आवश्यकता ।

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
    </plugin> 
    </plugins> 
<build> 
+1

अच्छा, हाँ, यह सही है। हालांकि, इसका मतलब यह है कि प्रत्येक * बच्चे में स्पष्ट रूप से प्लगइन निर्दिष्ट करना। मैं इस विचार को पसंद कर रहा था कि मैं माता-पिता से स्वचालित रूप से उत्तराधिकारी हो सकता हूं। –

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