Классы компиляции javac, исключенные с атрибутом "exclude"
У меня есть большой Ant-файл с макросом, компилирующим мои проекты в jar (Eclipse-внедренная версия Ant 1.10.5).
Я добавил возможность исключить некоторые части источника с помощью excludes
атрибут из <javac>
задача, но, кажется, она дает мне ошибки компиляции в файле, которые действительно были исключены (из того, что я делаю из [javac]
выход).
Вот выдержка из build.xml
:
<macrodef name="dojar">
<attribute name="tgt" />
<attribute name="excl" default="" />
<sequential>
...
<javac source="1.7" target="1.7" encoding="UTF8" includeantruntime="no" debug="true" debuglevel="lines,source" optimize="no"
srcdir="/home/matthieu/Eclipse_ws/@{tgt}/src" destdir="/home/matthieu/Eclipse_ws/@{tgt}/bin.javac" classpathref="projects.classpath"
excludes="@{excl}">
...
</sequential>
</macrodef>
Вызывается с целью:
<target name="MyProject">
<dojar tgt="MyProject" excl="**/mailslot/**,**/mgm/**" />
</target>
Дает мне следующий вывод
[javac] Compiling 19 source files to /home/matthieu/Eclipse_ws/MyProject/bin.javac
[javac] warning: [options] bootstrap class path not set in conjunction with -source 1.7
[javac] /home/matthieu/Eclipse_ws/MyProject/src/com/comp/mailslot/MailslotServer.java:3: error: package com.sun.jna.ptr does not exist
...
[javac] /home/matthieu/Eclipse_ws/MyProject/src/com/comp/sys/comm/mgm/ControleurMGM.java:9: error: package com.comp.plc.mgm does not exist
[javac] import com.comp.plc.mgm.ConnexionMgm;
Линия Compiling 19 source files to ...
говорит, что javac действительно понимает, что не должен их компилировать:
~/Eclipse_ws/MyProject/src$ find . -name '*.java' | wc -l
41
~/Eclipse_ws/MyProject/src$ find . -name '*.java' | grep -v /mailslot/ | grep -v /mgm/ | wc -l
19
Тем не менее, он все еще пытается скомпилировать файлы com/comp/mailslot/MailslotServer.java
а также com/comp/sys/comm/mgm/ControleurMGM.java
которые специально исключены **/mailslot/**
а также **/mgm/**
узоры.
Теперь, если я включу один шаблон в excludes
атрибут (excludes="**/mailslot/**"
), то mailslot
файлы не компилируются, но mgm
такие есть (и, конечно, дают мне ошибки, потому что некоторые из его зависимостей отсутствуют в пути к классам).
Я что-то упустил очевидное? Все связанные с этим вопросы, которые я нашел, игнорировали один шаблон (который выглядит так, как будто он работает, но это не то, что я хочу).
Я должен добавить добавление <exclude>
вложенные элементы в <javac>
будет сложно, так как dojar
макрос является общим. Приспосабливая все в excludes
атрибут был то, что мне было нужно.