2012-05-23 3 views
5

내 웹 프로젝트의 디렉토리에서 LESS CSS 전처리기를 실행하도록 maven을 설정하려고합니다. 기본 흐름은maven-antrun-plugin에서 foreach 호출

  1. 입니다. Maven은 maven-antrun-plugin을 호출합니다.
  2. Ant-contrib <foreach/> 디렉토리를 통해 반복하고 모든 .less 파일을 찾고 대상을 호출합니다.
  3. 대상은 파일을 변환하는 LESS를 실행하는 Rhino를 실행합니다.

이렇게하려면, 나는 다음과 같은 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] 

Ant에서 뭔가가 POM 파일을 읽으려고 시도하여 대상을 찾고있는 것처럼 보입니다. 두 대상 모두 target/antrun/build-main.xml 파일과 target/antrun/build-processLessFile.xml 파일에 생성되므로 두 디렉토리를보고 있어야하는 디렉토리입니다.

+0

개미가 아닌 개미가 아니라는 뜻입니까? –

+0

고마워, 나는 계속 잘못 입력했다. –

답변

5

개미 플러그인이 둘 이상의 대상 섹션 선언을 지원하지 않는 것으로 보입니다. 하는 수단을 제공하기 위해이 플러그인의 의도하지

다음 깊은 plug-in documentation 상태를 파고

target/antrun/build-main.xml 

: 당신은 내가 무슨 말보고 생성 된 ANT 스크립트를 확인하실 수 있습니다 POM을 오염 시키므로 모든 Ant 작업을 build.xml 파일로 옮기고 Ant의 작업을 사용하여 POM에서 호출하는 것이 좋습니다.

가혹한 단어이지만 조언은 확실합니다. ANT 논리를 전용 파일로 옮기고 다음과 같이 호출하는 것이 좋습니다.

 <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

새로운 종속성을 추가하기 전에 회사의 내부 Maven 레포에서 소프트웨어를 사용하여 작업하려고합니다. –