2014-02-28 4 views
1

내 maven 파일에서 protoc (protobuffer 컴파일러)를 실행하고 싶습니다. 나는 모든 디렉토리에있는 파일을 통해 루프 또는 뭔가 너무 받는다는 반복을 정의 할 수 있습니다 방법은 다음Maven의 protoc에서 여러 클래스를 생성하는 방법은 무엇입니까?

<executions> 
    <execution> 
     <id>generate-sources</id> 
     <phase>generate-sources</phase> 
     <configuration> 
     <tasks> 
      .... <!-- I have several of these blocks - how can I reduce them to one? --> 
      <exec executable="protoc/protoc.exe"> 
       <arg value="--java_out=target/generated-sources"/> 
       <arg value="src/main/protos/Proto1.proto"/> 
       <arg value="--proto_path=src/main/protos"/> 
      </exec> 
      <exec executable="protoc/protoc.exe"> 
       <arg value="--java_out=target/generated-sources"/> 
       <arg value="src/main/protos/Proto2.proto"/> 
       <arg value="--proto_path=src/main/protos"/> 
      </exec> 
     ..... 
     </tasks> 
     <sourceRoot>target/generated-sources</sourceRoot> 
    </configuration> 
    <goals> 
     <goal>run</goal> 
    </goals> 
    </execution> 

같은 pom.xml 파일에 개미 작업을 임베디드?

거기에 protobuffer maven 플러그인이 있다는 것을 알고 있지만 사용하기 위해 외부 저장소를 선언해야했지만 현재로서는 옵션이 아닙니다.

+0

코드를 더욱 개미 작업처럼 보인다. 그렇다면 개미의 질문이 많습니다. 적용을 살펴 보시기 바랍니다 : http://ant.apache.org/manual/Tasks/apply.html –

+0

Maven에는 현재 파일을 반복 할 수있는 가능성이 없습니다. – khmarbaise

+0

질문 재 작성 – morpheus05

답변

3

적용 할 개미 작업이 필요합니다. 에 의해 간부의 목록을 교체 :

<apply executable="protoc/protoc.exe" parallel="false"> 
    <arg value="--java_out=target/generated-sources"/> 
    <srcfile/> 
    <arg value="--proto_path=src/main/protos"/> 
    <fileset dir="${basedir}/src/main/protos" includes="*.proto"/> 
</apply> 

http://ant.apache.org/manual/Tasks/apply.html

+0

좋아,이 작업은 다음과 같이 $ {base.dir}을 추가하는 경우에만 작동합니다. 그렇지 않으면 protoc가 화를냅니다. – morpheus05

관련 문제