2010-10-13 95 views
13

您如何將Freemarker(或其他選擇)作爲模板代碼生成器構建到Maven項目中?我對Maven來說很新,希望得到一些幫助。如何在Maven中使用模板代碼生成器(例如freemarker)?

我想從我的項目中的模板生成一些代碼。 [a]

與其寫下我自己的搜索結果,發現freemarker似乎被Spring使用,這對我來說是一個很好的參考,雖然我還沒有開始使用它,任何其他的建議,適用於Maven也會很感激。

This website告訴我如何將它作爲依賴添加到我的pom.xml。 This SO question告訴我生成的資源應該在哪裏。我無法解決的是如何將它們連接在一起,所以我從模板生成我生成的源代碼,然後使用我生成的源代碼像編譯,測試,jar,javadoc等常規源代碼。有沒有其他人使用過Maven的模板代碼生成器,可以幫助嗎?

[a]我知道泛型是通常的解決方案,實際上我正在使用它們,但我必須使用模板來處理原始情況,而不會引入複製/粘貼錯誤。請相信我:-)

回答

20

我已經爲此寫了一個maven插件。它使用FreeMarker預處理器。

繼承人從pom.xml的片段凸顯其用法:

<plugins> 
    <plugin> 
     <configuration> 
      <cfgFile>src/test/resources/freemarker/config.fmpp</cfgFile> 
      <outputDirectory>target/test/generated-sources/fmpp/</outputDirectory> 
      <templateDirectory>src/test/resources/fmpp/</templateDirectory> 
     </configuration> 
     <groupId>com.googlecode.fmpp-maven-plugin</groupId> 
     <artifactId>fmpp-maven-plugin</artifactId> 
     <version>1.0</version> 
     <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

這裏CFGFILE是你保持對FMPP配置文件的路徑。 (如果您沒有使用任何通過FreeMarker的特殊數據,那麼一個空文件就足夠了) templateDirectory是您保存FreeMarker模板的地方。 outputDirectory是您希望生成輸出文件的位置。

我正在編寫一個突出顯示插件使用情況的詳細文檔,並會相應地更新project website

+0

該插件的+1。 – 2010-10-15 09:27:06

+0

這個文件怎麼樣? :-)我無法弄清楚如何從pom傳遞值(例如,project.version),以便freemarker插件知道它們。 – bacar 2013-05-13 16:26:43

+1

謝謝你的插件!這對我剛剛寫的一個圖書館非常有用! https://github.com/mintern-java/functions – 2014-11-06 01:14:04

0

這裏是工作的另一個插件: https://code.google.com/p/maven-replacer-plugin/

從問題的原始描述這聽起來像你應該考慮創建一個Maven原型(又名項目模板): http://maven.apache.org/archetype/maven-archetype-plugin/

它聽起來就像你可能想在等式中添加一些屬性一樣: http://maven.apache.org/archetype/maven-archetype-plugin/examples/create-with-property-file.html

Maven原型功能還提供了使用Apache Veloci ty(與Freemarker差不多),但我還沒有做過那麼多工作。