2012-05-23 15 views
5

मैं अपने वेब प्रोजेक्ट में निर्देशिका पर कम सीएसएस प्रीप्रोसेसर निष्पादित करने के लिए मेवेन सेट अप करने की कोशिश कर रहा हूं। मूल प्रवाह है:maven-antrun-plugin में कॉलिंग foreach

  1. मेवेन मेवेन-एंट्रून-प्लगइन को कॉल करता है।
  2. एंटी-कॉन्ट्रिब <foreach/> एक निर्देशिका के माध्यम से loops और सभी unless फ़ाइलों को पाता है और एक लक्ष्य कहते हैं।
  3. लक्ष्य राइनो निष्पादित करता है, जो कम से कम निष्पादित करता है जो फ़ाइल को परिवर्तित करता है।

ऐसा करने के लिए, मैं निम्न XML है:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <configuration> 
         <target name="processLessFile"> 
          <!-- ... --> 
         </target> 
         <target name="main"> 
          <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath"/> 
          <property name="css.dir" location="src/main/webapp/css"/> 
          <foreach param="file" target="processLessFile"> 
           <fileset dir="${css.dir}"> 
            <filename name="**/*.less" /> 
           </fileset> 
          </foreach> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>ant</groupId> 
        <artifactId>ant-contrib</artifactId> 
        <version>1.0b2</version> 
       </dependency> 
      </dependencies> 
     </plugin> 

समस्या मैं का सामना कर रहा हूँ यह है कि "मुख्य" लक्ष्य पर अमल करने के लिए शुरू होता है, लेकिन फिर <foreach> में विफल रहता है:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (default) on project model-web-project: An Ant BuildException has occured: The following error occurred while executing this line: 
[ERROR] /Users/.../pom.xml:4: Unexpected element "{http://maven.apache.org/POM/4.0.0}project" {antlib:org.apache.tools.ant}project 
[ERROR] around Ant part ...<foreach param="file" target="processLessFile">... @ 6:50 in /Users/.../target/antrun/build-main.xml 
[ERROR] -> [Help 1] 

ऐसा प्रतीत होता है कि चींटी में कुछ पीओएम फ़ाइल को पढ़ने की कोशिश कर रहा है, संभवतः लक्ष्य की तलाश में है। मैं देखता हूं कि दोनों लक्ष्य फाइल लक्ष्य/antrun/build-main.xml और target/antrun/build-processLessFile.xml में उत्पन्न किए गए हैं, इसलिए यह निर्देशिका है जो इसे देखना चाहिए।

+0

आपका मतलब एंटी-कोलाब की बजाय चींटी-contrib है, है ना? –

+0

धन्यवाद, मैं उस गलत टाइपिंग को जारी रखता हूं। –

उत्तर

5

चींटी प्लगइन एक से अधिक लक्ष्य अनुभाग की घोषणा का समर्थन करने के लिए प्रकट नहीं होता है। आप उत्पन्न चींटी स्क्रिप्ट की जांच कर सकते देखने के लिए मैं क्या बात कर रहा हूँ:

target/antrun/build-main.xml 

गहरी plug-in documentation राज्यों खुदाई निम्नलिखित:

यह इस प्लगइन के इरादे का एक साधन प्रदान करने के लिए नहीं है पीओएम को प्रदूषित करना, इसलिए इसे आपके सभी चींट कार्यों को build.xml फ़ाइल में स्थानांतरित करने के लिए प्रोत्साहित किया जाता है और इसे एंटी के कार्य का उपयोग करके पीओएम से कॉल करें।

कठोर शब्द, लेकिन सलाह अच्छी है। मैं आपके एएनटी लॉजिक को एक समर्पित फाइल में ले जाने की सिफारिश करता हूं और इसे निम्नानुसार आमंत्रित करता हूं:

 <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.7</version> 
      <executions> 
       <execution> 
        <phase>compile</phase> 
        <configuration> 
         <target> 
          <ant antfile="${basedir}/src/main/ant/build.xml"/> 
         </target> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
1

आप lesscss-maven-plugin से अवगत हैं मुझे लगता है कि आपकी समस्याओं को हल करना चाहिए।

+0

यह होगा, लेकिन मैं नई निर्भरताओं को जोड़ने से पहले अपनी कंपनी के आंतरिक मेवेन रेपो पर सॉफ़्टवेयर का उपयोग करके काम करने की कोशिश कर रहा हूं। –