我需要在編譯之前過濾java文件,保持原始源代碼不變,並從已過濾的代碼編譯(基本上,我需要設置生成日期等)。 我正在使用NetBeans及其優秀的Ant構建文件。在NetBeans和Ant中編譯之前過濾源代碼
因此,有一天我發現需要在編譯之前預處理我的源文件,並遇到了一個大問題。不,我沒有立即跑到SO,我做了一些研究,但失敗了。所以,我的悲傷故事...
我找到了「複製」任務的「過濾器」選項,在build-impl.xml文件中覆蓋了macrodef「j2seproject3:javac」,並在其中間添加了過濾器。我得到了期望的結果,是的,但現在我的測試無法正常工作,因爲他們也使用該宏定義。
接下來,我累了壓倒一切 「-DO編譯」 目標,複製&過濾文件目錄編譯/ TEMP-SRC,並通過新的源目錄 「j2seproject3:javac的」:參數
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,
-compile-depend,-prepare-sources"
if="have.sources" name="-do-compile">
<j2seproject3:javac gensrcdir="${build.generated.sources.dir}" srcdir="build/temp-src"/>
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
</copy>
</target>
現在螞蟻對我說,這個macrodef並不存在!
The prefix "j2seproject3" for element "j2seproject3:javac" is not bound.
這是奇怪的,因爲build-impl.xml中包含macrodef和build-impl.xml中導入到主構建文件。
而且,順便說一句,我不能直接編輯build-impl.xml,因爲NetBeans會在每個其他版本上重寫它。
所以,我的問題是:如何在NetBeans中編譯之前自動過濾源代碼,並且不要破壞構建過程?
我不認爲在源文件中設置生成日期是有意義的。將該信息添加到從構建生成的jar文件中的清單更爲常見。 – 2011-03-03 08:07:10
@凱文斯特布里奇 - 是的,最好在清單中這樣做。但是,如果您需要預處理文件,擴展代碼模板,使用代碼生成器等 - 您還需要別的東西。 – Rogach 2011-03-03 16:53:49