Как исключить исходный пакет, используя javac в Ant? - PullRequest
6 голосов
/ 13 февраля 2010

Я посмотрел на кучу разных примеров и попробовал несколько вариантов, но не могу заставить это работать правильно. Также кажется, что вы не можете исключить весь каталог с помощью javac, а только файлы, что, я полагаю, означает, что вы не можете указать пакет? Вот что у меня есть:

<javac srcdir="src" destdir="WEB-INF/classes" excludes="path/to/excluded/package/*.java">
    <classpath refid="compile.classpath"/> <!-- reference defined earlier -->
</javac>

Ответы [ 4 ]

12 голосов
/ 13 февраля 2010

Вы можете исключить целые каталоги или деревья каталогов с помощью "**" и исключить. Пример

<dirset dir="aDirectory">
    <include name="a/package/**"/>
    <exclude name="**/package/to/exclude**"/>
</dirset>
5 голосов
/ 24 ноября 2011

Обратите внимание, что exclude не работает, если какой-либо из файлов в «src» (или в «include», если указан) имеет зависимость от файлов, указанных в exclude.Поэтому сначала убедитесь, что исключенные файлы не упоминаются ни в одном из включаемых файлов.

1 голос
/ 19 сентября 2012

Простота задачи javac включает все файлы в srcdir, и вы можете просто добавить в задачу элемент exclude, например:

<javac destdir="build" srcdir="src" >
    <exclude name="**/my/package/test/*.java" />
</javac>

Это не скомпилирует ни один из классов в пакете my.package.test.

0 голосов
/ 23 августа 2017

Майк, другой способ сказать javac, что он явно не имеет доступа к определенным файлам, - сбросить sourcepath. Я только что понял это ...

Из руководства Муравья:

Примечание: если вы хотите скомпилировать только исходные файлы, расположенные в определенных пакеты ниже общего корня, используйте атрибуты include / exclude или / вложенные элементы для фильтрации по этим пакетам. Делать не включать часть структуры вашего пакета в атрибут srcdir (или вложенные элементы), или Ant будет перекомпилировать ваши исходные файлы каждый раз время запуска вашей цели компиляции. Смотрите Ant FAQ для дополнительных информация.

Если вы хотите компилировать только файлы, явно указанные и отключить механизм поиска по умолчанию javac, то вы можете удалить исходный путь атрибуты:

<javac sourcepath="" srcdir="${src}" destdir="${build}" >
    <include name="**/*.java"/>
    <exclude name="**/Example.java"/>
</javac>

Таким образом, javac скомпилирует все исходные файлы java в "$ {src}" каталог, но пропустить примеры. Компилятор даже выдаст ошибки если некоторые из файлов не-примеров ссылаются на них.

...