我寫了一個小的BeanShell腳本,用源代碼中的實際行號替換"__LINE__"
。它在Ant中運行良好。在Maven中過濾源代碼
我正在尋找一種方法來過濾Maven中的源代碼,以便我的BeanShell腳本可以生成一個新的源代碼目錄,然後進行編譯。
我知道資源文件過濾。有沒有類似的源代碼設施?
我寫了一個小的BeanShell腳本,用源代碼中的實際行號替換"__LINE__"
。它在Ant中運行良好。在Maven中過濾源代碼
我正在尋找一種方法來過濾Maven中的源代碼,以便我的BeanShell腳本可以生成一個新的源代碼目錄,然後進行編譯。
我知道資源文件過濾。有沒有類似的源代碼設施?
幾個月前過濾源代碼仍然很棘手,但現在MOJO項目中有一個標準插件。你現在可以用一個經典的插件聲明來做到這一點。
要過濾源代碼(例如,當您希望Java代碼中有一個常量來檢索項目版本或artifactId)時,您現在應該使用templating-maven-plugin。
把你的代碼,應在生成過程中src/main/java-templates
下進行過濾,你會src/main/java
下非過濾來源通常做。在代碼中使用${project.version}
或來自POM的任何屬性。
只要把一樣的東西:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>templating-maven-plugin</artifactId>
<version>1.0-alpha-3</version> <!-- Be sure to use the last version. Check on the website's plugin -->
<executions>
<execution>
<id>filter-src</id>
<goals>
<goal>filter-sources</goal>
</goals>
</execution>
</executions>
</plugin>
是:-)完成。您放入src/main/java-templates
的代碼將被過濾並添加到類路徑中。
使用非常簡單(請參閱example here)。
這比尊重配置Maven的約定更好。你基本上正在取代幾十條XML線和一些黑客來完成一些乾淨的事情。
附註:這適用於Eclipse的例子。
嗨,我試着按照上面的回答,但是當我將項目導入eclipse-kepler並啓用eclipse的自動構建時,它抱怨說它找不到'src/main/java-templates' src dir中的類。 ..也看着項目源代碼構建路徑,src/main/java-templates的src目錄不存在......不知道它是否應該在那裏。只是還要提到,當我從eclipse運行'mvn install'時,項目會成功建立,但我希望eclipse不要抱怨,它應該自動從'target/generated-sources/java-templates'中選擇處理過的源代碼,米錯了? – 2014-03-03 10:52:50
src/main/java-templates不是源文件夾,不能在IDE內部配置爲一個。這樣做會與目標/ generated-sources/java-templates過濾的目錄(必須在Eclipse中顯示爲源文件夾,您不應編輯)衝突。 – 2014-03-13 14:51:40
對於Eclipse內部的自動刷新,我認爲你錯過了一些M2E配置,嘗試在你的pom.xml中添加https://gist.github.com/Batmat/9529785。它工作更好嗎? – 2014-03-13 14:52:23