2011-03-06 5 views
20

मुझे लगता है कि संकलन चरण में चलाना चाहिए एक Maven प्लगइन है, तो परियोजना है कि मेरी प्लगइन की खपत में, मैं कुछ इस तरह करना है:डिफ़ॉल्ट रूप से एक चरण में एक मेवेन प्लगइन कैसे संलग्न करें?

<executions> 
<execution> 
    <phase>compile</phase> 
    <goals> 
    <goal>my-goal</goal> 
    </goals> 
</execution> 
</executions> 

मैं क्या जरूरत है डिफ़ॉल्ट द्वारा है संकलन चरण में my-goal संलग्न करें यदि उपयोगकर्ता ने पहले से ही मेरी प्लगइन शामिल की है (आदर्श रूप से उपर्युक्त भाग आवश्यक नहीं होगा, केवल प्लगइन घोषणा)।

क्या यह संभव है?

+0

क्या तुमने कभी एक तरह से पूरी तरह से फांसी भाग से बचने के लिए मिला? – Zalumon

उत्तर

7

अपने मोजो क्लासडे एनोटेशन में @phaseannotation डालें।

दस्तावेज़ का कहना है:

@phase <phaseName> 

यह टिप्पणी इस लक्ष्य के लिए डिफ़ॉल्ट चरण निर्दिष्ट करता है। यदि आप इस लक्ष्य के लिए pom.xml पर निष्पादन जोड़ते हैं और चरण निर्दिष्ट नहीं करते हैं, तो मैवेन डिफ़ॉल्ट रूप से इस एनोटेशन में निर्दिष्ट चरण को लक्ष्य से जोड़ देगा।

यदि यह काम नहीं करता है, तो मुझे लगता है कि एक जेरा की आवश्यकता है।

+4

ठीक है यह ** आंशिक रूप से ** काम करता है ** वास्तव में, मुझे 'चरण' भाग को स्पष्ट करने की आवश्यकता नहीं है, लेकिन मुझे अभी भी पूरे '' बकवास –

+7

ओह, हाँ, निश्चित रूप से रखना होगा। इससे बचने के लिए आपको एक कस्टम जीवन चक्र की आवश्यकता है। – bmargulies

-5

आप प्लगइन को मैवेन लाइफसील goal पर जोड़ते हैं। प्लगइन कॉन्फ़िगरेशन चरण में घोषित किया जाना चाहिए।

उदाहरण के लिए यदि आप निर्माण चरण आप कुछ इस तरह करने की आवश्यकता होगी के दौरान कुछ प्लग इन चलाना वान:

<project> 
... 
... 
<build> 
    <plugin> 
     **Configuration of plugin** 
    </plugin> 
</build> 
</project> 

कृपया Maven lifecycles यहाँ के बारे में ध्यान से पढ़ें (यह Maven की समझ के लिए मौलिक है): http://maven.apache.org/guides/mini/guide-configuring-plugins.html

पुनश्च: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

और फिर कैसे एक प्लगइन कॉन्फ़िगर करने के लिए के बारे में पढ़ा मेवेन के तर्क में होना शुरुआत में आसान नहीं है। लेकिन बाद में यह पुरस्कृत है।

+0

तो आपका मतलब है कि मुझे क्लाइंट के पोम के बजाय प्लगइन के पोम के अंदर '

6

अपनी प्लगइन में src \ main \ resource \ META-INF \ plexus \ cells.xml का एक उदाहरण बनाएं।

वहां आर्टिफैक्ट प्रकारों के लिए लाइफसाइकल मैपिंग बनाएं जो आप चाहते हैं कि आपका मोजो समर्थन करे। सुनिश्चित करें कि यह उन सभी चरणों और प्लगइन को सूचीबद्ध करता है जिन्हें आप समर्थन देना चाहते हैं। शायद maven-core.jar से एक से कॉपी करने के लिए सबसे अच्छा है।

फिर उस चरण में उपयुक्त लाइफसाइकल में अपनी प्लगइन जोड़ें जिसमें आप उन्हें बनाना चाहते हैं।

जैसे उपभोग-आर मोजो में जोड़ा आर जीवन चक्र के चरण संकलन।

<!-- Android archive (aar) support --> 
<component> 
    <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role> 
    <role-hint>aar</role-hint> 
    <implementation> 
    org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping 
    </implementation> 
    <configuration> 
    <phases> 
     <generate-sources> 
     com.jayway.maven.plugins.android.generation2:android-maven-plugin:generate-sources 
     </generate-sources> 
     <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources> 
     <compile> 
     com.jayway.maven.plugins.android.generation2:android-maven-plugin:consume-aar, 
     org.apache.maven.plugins:maven-compiler-plugin:compile 
     </compile> 
0

यह संभव है, लेकिन यह एक अनियंत्रित मेवेन सुविधा है।

उपयोग इस components.xml:

<component-set> 
    <components> 
    <component> 
     <role>org.apache.maven.lifecycle.Lifecycle</role> 
     <implementation>org.apache.maven.lifecycle.Lifecycle</implementation> 
     <role-hint>myplugin</role-hint> 
     <configuration> 
      <id>accurest</id> 
      <phases> 
       <phase>my-plugin-not-used-phase</phase> 
      </phases> 
      <default-phases> 
       <compile> 
        my.package:my-plugin:${project.version}:my-goal 
       </compile> 
      </default-phases> 
     </configuration> 
    </component> 
</components> 

लेकिन अपने प्लगइन मौजूदा जीवन चक्र को संशोधित करने के <extensions>true</extensions> साथ जोड़ा जाना चाहिए।

अधिक: How to bind plugin mojos (goals) to few phases of default lifecycle?

रियल परियोजना: https://github.com/spring-cloud/spring-cloud-contract/blob/master/spring-cloud-contract-tools/spring-cloud-contract-maven-plugin/src/main/resources/META-INF/plexus/components.xml

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