2012-10-01 13 views
8

वेबपैप को तैनात करते समय मुझे UI संसाधनों में कुछ चर अपडेट करने, कुछ संपत्तियों को अनजिप करने और कुछ फ़ाइलों को संक्षिप्त करने की आवश्यकता होती है, वर्तमान में यह एक चींटी कार्य के माध्यम से हासिल की जाती है। मैं Maven निर्माण प्रक्रिया कुछ इस तरह का प्रयोग करने में इस कार्य को चलाने के लिए कोशिश कर रहा हूँ ...युद्ध पैक होने से पहले मेवेन बिल्ड चरण में एक चींटी कार्य चलाएं?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>deploy-ui</id> 
      <phase>prepare-package</phase> 
      <inherited>false</inherited> 
      <configuration> 
       <target> 
        <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" /> 
        <ant antfile="build.xml" target="static-assets" /> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

ऊपर विफल रहता है क्योंकि फ़ाइलों को अभी तक लक्ष्य निर्देशिका में कॉपी किया गया है। यदि मैं चरण को "पैकेज" पर सेट करता हूं तो चींटी कार्य ठीक चलता है और सभी फाइलें बनाई जाती हैं/संशोधित होती हैं, लेकिन यह कोई मदद नहीं है क्योंकि एंटर लक्ष्य को चलाने से पहले .war पहले ही बनाया जा चुका है।

असल में, मुझे तैयार-चरण चरण के अंत में अपने चींटी लक्ष्य को चलाने की आवश्यकता है।

Lifecycle Reference हालांकि देखा गया है कि मैं एंट्रिन प्लगइन में अधिक बारीक लक्ष्य का पर्दाफाश करने के लिए कसरत नहीं कर सकता।

कोई विचार?

+0

क्या आपने इसके बजाय "शुद्ध" मेवेन प्लगइन्स का उपयोग करके उन चींटियों को करने के बारे में सोचा है? – maba

उत्तर

17

चूंकि मुझे मेरी टिप्पणी पर कोई जवाब नहीं मिला है, मुझे लगता है कि आप maven-antrun-plugin का उपयोग करना चाहते हैं।

जो मैंने सीखा और अनुभव किया है, यदि एक ही चरण में दो प्लगइन निष्पादित किए जाएंगे, तो उन्हें pom.xml में घोषित किए जाने के क्रम में निष्पादित किया जाएगा।

इस काम के लिए आपको में maven-antrun-plugin के बाद जोड़ना होगा।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <executions> 
     <execution> 
      <id>deploy-ui</id> 
      <phase>package</phase> 
      <inherited>false</inherited> 
      <configuration> 
       <target> 
        <property name="buildDir" value="${project.build.directory}/${project.build.finalName}" /> 
        <ant antfile="build.xml" target="static-assets" /> 
       </target> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <execution> 
      <!-- First step is to disable the default-war build step. --> 
      <id>default-war</id> 
      <phase>none</phase> 
     </execution> 
     <execution> 
      <!-- Second step is to create an exploded war. Done in prepare-package --> 
      <id>war-exploded</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>exploded</goal> 
      </goals> 
     </execution> 
     <execution> 
      <!-- Last step is to make sure that the war is built in the package phase --> 
      <id>custom-war</id> 
      <phase>package</phase> 
      <goals> 
       <goal>war</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

जोड़ा गया कुछ और फांसी ताकि default-war पहले अक्षम किया गया है, तो युद्ध विस्फोट है और अंत में युद्ध पैक किया जाता है।

+3

यह मेरी समस्या के लिए एक बहुत उपयोगी उत्तर था। हालांकि, मेरे पास थोड़ा अलग सेटअप था: विस्फोट (तैयार-पैकेज) -> प्रति-संसाधन (तैयार-पैकेज) -> युद्ध (पैकेज)। युद्ध को ओवरराइट करने के लिए: कार्य उत्पन्न विस्फोट, मुझे युद्ध के लिए एक खाली निर्देशिका में '' को इंगित करना पड़ा: युद्ध निष्पादन। – omilke

1

जैसा कि आपने देखा है यह एक ऐसा स्थान है जहां जीवन चक्र आवश्यक ग्रैन्युलरिटी प्रदान नहीं करता है। मैंने पहले किसी के लिए similar question का उत्तर दिया। यह आपके प्रश्न का सटीक उत्तर नहीं है लेकिन तकनीक लागू हो सकती है।

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

  • कोई संबंधित समस्या नहीं^_^