Как я могу исключить файлы из ссылочного пути в Ant? - PullRequest
6 голосов
/ 01 октября 2010

В проекте у нас есть несколько исходных путей, поэтому мы определили для них путь ссылки:

<path id="de.his.path.srcpath">
    <pathelement path="${de.his.dir.src.qis.java}"/>
    <pathelement path="${de.his.dir.src.h1.java}"/>
    ...
</path>

Использование ссылки прекрасно работает в теге :

<src refid="de.his.path.srcpath" />

На следующем шаге мы должны скопировать не-Java файлы в папку classpath:

<copy todir="${de.his.dir.bin.classes}" overwrite="true">
    <fileset refid="de.his.path.srcpath">
       <exclude name="**/*.java" />
    </fileset>
</copy>

К сожалению, это не работает, потому что "refid" и вложенные элементы могут не бытьсмешанный.

Есть ли способ получить набор всех файлов, отличных от Java, в моем исходном пути, не копируя список исходных путей в отдельные наборы файлов?

1 Ответ

3 голосов
/ 05 октября 2010

Вот вариант. Во-первых, используйте задачу pathconvert , чтобы создать шаблон, подходящий для генерации набора файлов:

<pathconvert pathsep="/**/*,"
             refid="de.his.path.srcpath"
             property="my_fileset_pattern">
    <filtermapper>
        <replacestring from="${basedir}/" to="" />
    </filtermapper>
</pathconvert>

Далее создайте набор файлов из всех файлов в путях, кроме исходных текстов java. Обратите внимание, что конечные символы подстановки /**/* необходимы, так как pathconvert делает только символы подстановки в списке, а не те, которые нужны в конце:

<fileset dir="." id="my_fileset" includes="${my_fileset_pattern}/**/*" >
     <exclude name="**/*.java" />
</fileset>

Тогда ваша задача копирования будет:

<copy todir="${de.his.dir.bin.classes}" overwrite="true" >
    <fileset refid="my_fileset" />
</copy>

Для переносимости, вместо жесткого кодирования подстановочного знака Unix /**/* вы можете использовать что-то вроде:

<property name="wildcard" value="${file.separator}**${file.separator}*" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...