我需要在编译之前过滤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