Классы компиляции 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 атрибут был то, что мне было нужно.

0 ответов

Другие вопросы по тегам