2014-02-28 90 views
2

我試圖從.thrift文件和後來的包裝中自動生成源文件。據我所知,maven-thrift-plugin是限制性的,因爲源目錄和目標目錄是固定的。有什麼方法可以指定源目錄和目標目錄嗎?我可以通過使用maven-antrun-plugin來實現這個目標,但如果我不需要,我不想不必要地污染我的pom。Maven節儉插件

謝謝。

+0

我敢打賭,已經有一個答案,但我沒有找到它。 – JensG

回答

1

據我可以看到從源(https://github.com/dtrott/maven-thrift-plugin/blob/master/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java)有控制此行爲的配置屬性。

嘗試這些特性,他們應該工作:

  • thriftSourceRoot
  • thriftTestSourceRoot
  • outputDirectory

這些道具應該被添加到<configuration>部分與<thriftExecutable>一起,等:

<plugin> 
    <groupId>org.apache.thrift.tools</groupId> 
    <artifactId>maven-thrift-plugin</artifactId> 
    <version>0.1.10</version> 
    <configuration> 
     <thriftExecutable>/usr/local/bin/thrift</thriftExecutable> 
     <thriftSourceRoot>${basedir}/src/main/my_custom_thrift_root</thriftSourceRoot> 
    </configuration> 
    <executions> 
    ... 
</plugin> 
+0

太棒了!謝謝。這確實將源文件生成到我指定的目錄中。但是,它創建 – Kesh

+0

謝謝!這確實將源文件生成到我指定的目錄中。然而,它創建這些文件在一個gen-java目錄中,我似乎無法擺脫。此外,插件會強制清除輸出目錄,這對我來說也是一個問題,因爲我在目錄中有其他幫助器類,並且它們也會被刪除。有什麼辦法可以避免強制清理? – Kesh

+0

我不認爲有可能擺脫'gen-java'(至少即使在命令行中我也做不到)。說到強制清理:可能會從一個節儉源生成多個java文件。因此,垃圾生成的文件將在每次重新命名「節點」中的「struct」/「service」後出現。最好在不同目錄中生成其他文件。 – Wildfire

0

我也結束了持續的maven-antrun-plugin路線,這裏是一個功能例如:https://github.com/cobbzilla/cobbzilla-wizard/tree/master/wizard-thrift

  • 的pom.xml使用maven-antrun-plugin的exec thrift目標的build.xml
  • 的build.xml確實節儉編譯和包裝。

生成的源代碼返回到源代碼樹中;我不喜歡衍生文件污染我的上游源代碼控制,所以生成的文件位於thrift包中,而包目錄位於.gitignore文件中。有點kludgy。

一個更好的方式,我瞭解了自編寫代碼是to compile multiple java source directories in a single maven project,這將是更清潔。