2014-03-13 49 views
0

如何在maven構建階段運行簡單命令(或包含上述命令的shell腳本)?Maven:運行任意命令構建階段

我的具體情況是我想運行協議緩衝區編譯器(protoc),它在運行java編譯器之前生成一個java類。

我覺得它應該可能成爲構建目標的「過程資源」階段的一部分(請參閱http://books.sonatype.com/mvnref-book/reference/lifecycle-sect-common-goals.html),但他們只討論複製碰巧是shell腳本而不運行腳本的文件。

+1

exec-maven-plugin:http://stackoverflow.com/questions/2472376/how-do-i-execute-a-program-using-maven –

+0

啊,顯然還有這個插件專門做protobuf編譯。 https://github.com/dtrott/maven-protoc-plugin – engineerC

回答

1

解決您的問題的一個辦法是使用maven-antrun-plugin。這就是我用一個Maven構建內建立一些scriptlike命令:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.3</version> 
    <executions> 
     <execution> 
      <phase>generate-sources</phase> 
      <configuration> 
       <tasks> 
        <echo message="basedir=${basedir}" /> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

有了這個簡單的echo任務在構建階段generate-sources開始。所以你可以將這個解決方案擴展到你的需求。

我喜歡這個螞蟻aproach更多比如exec-maven-plugin,因爲它是一種更獨立於系統的方式。但那是一個偏好的事情。