Мне нужно отфильтровать Java-файлы перед компиляцией, оставив исходные источники без изменений и компилируя из отфильтрованных (в основном, мне нужно установить дату сборки и тому подобное).
Я использую NetBeans с его великолепными файлами сборки Ant.
Итак, однажды я обнаружил необходимость предварительной обработки исходных файлов перед компиляцией и столкнулся с большой проблемой. Нет, я не побежал в SO сразу, я провел некоторые исследования, но потерпел неудачу. Итак, вот моя грустная история ...
Я нашел опцию «filter» задачи «copy», переопределил macrodef «j2seproject3: javac» в файле build-impl.xml и добавил фильтр в его середине. Да, я получил желаемый результат, но теперь мои тесты не работают, поскольку они тоже используют этот макрос.
Затем я устал переопределять цель «-do-compile», копировать и фильтровать файлы в каталог build / 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>
А теперь Ant говорит мне, что этого макроопределения не существует!
The prefix "j2seproject3" for element "j2seproject3:javac" is not bound.
Это странно, поскольку build-impl.xml содержит этот макрос, а build-impl.xml импортируется в основной файл сборки.
И, кстати, я не могу напрямую редактировать build-impl.xml, поскольку NetBeans переписывает его при каждой другой сборке.
Итак, мой вопрос: как я могу автоматически фильтровать источники перед компиляцией в NetBeans и не нарушать процесс сборки?