Муравей исключить не исключает каталог

1

Я хочу упаковать некоторые конкретные библиотеки в пакет. Поэтому я хочу ниже задачи ant:

 <property name="src" location="src"/>
  <property name="build" location="bin"/>
  <property name="target"  location="c:\\temp\\invoke.jar"/>
 <target name="dist" depends="compile"
        description="generate the distribution" >
    <echo message="Start jar java.lang.invoke package.."/>
    <delete file="${target}" />
    <jar destfile="${target}" basedir="${build}">
        <fileset dir="${build}/">
            <include name="java/lang/invoke/*.*" />
            <exclude name="com/** javax/** org/** sun/**" />
      </fileset>
    </jar>
  </target>

Структура каталогов

c:\....\J9 JCL>dir bin
 Directory of C:\...\J9 JCL\bin

03/10/2015  05:42 PM    <DIR>          com
03/10/2015  05:42 PM    <DIR>          java
03/10/2015  05:42 PM    <DIR>          javax
07/20/2014  06:44 PM             2,173 notices.txt
03/10/2015  05:42 PM    <DIR>          org
07/20/2014  06:44 PM             1,056 rcm.xsd
03/10/2015  05:42 PM    <DIR>          sun
07/20/2014  06:44 PM               230 tags.properties

AS, показанный в задаче "dist", только библиотека в

бен /Java/языки /Invoke

требуется для задачи jar. Но после запуска, похоже, оба include и exclude не работают. Есть ли какие-то ошибки в моем сценарии?

Теги:
ant

2 ответа

0
Лучший ответ

попробуйте это, просто измените целевой раздел и удалите набор файлов

<target name="dist" depends="compile"
        description="generate the distribution" >
    <echo message="Start jar java.lang.invoke package.."/>
    <delete file="${target}" />
    <jar destfile="${target}" 
         basedir="${build}"
         include name="java/lang/invoke/*.*" 
         exclude name="com/** javax/** org/** sun/**"
    </jar>
</target>
  • 0
    вы хотите использовать includes а не include name
1

Причина, по которой ваши исключения не работают, и ответ faljbour заключается в том, что работает вложенный элемент exclude а атрибуты excludes работают по-разному. Атрибут разбивает свое значение на запятую или пробелы, поэтому вы можете указать несколько из них. Элемент не работает - в конце концов вы можете указать шаблон, содержащий пробелы. Таким образом, вы получаете единый образец "com/** javax/** org/** sun/**", который, безусловно, ничего не соответствует.

<jar destfile="${target}" basedir="${build}">
    <fileset dir="${build}"
        includes="java/lang/invoke/*.*"
        excludes="com/** javax/** org/** sun/**" />
  </fileset>
</jar>

или

<jar destfile="${target}" basedir="${build}">
    <fileset dir="${build}/">
        <include name="java/lang/invoke/*.*" />
        <exclude name="com/**"/>
        <exclude name="javax/**"/>
        <exclude name="org/**"/>
        <exclude name="sun/**" />
  </fileset>
</jar>

будет работать так же. BTW, вы можете оставить ** как Ant автоматически переводит шаблон foo/ to foo/**.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню