2010-09-26 3 views
2

Вот мой скрипт Ant для создания пакета jar. У меня есть куча пакетов jar для атрибута Class-Path для манифеста, все они находятся в определенной папке.Ant - как получить имя всех файлов в определенной папке

Я не хочу его жестко кодировать, как я могу получить их автоматически?

<jar jarfile="${client_deploy_dir}/HelloWorld.jar" 
    basedir="${client_work_dir}/compiled"> 
    <manifest> 
     <attribute name="Main-Class" value="HelloWorld.Main"/> 
     <attribute name="Class-Path" value="???"/> 
    </manifest> 
</jar> 

Благодаря

ответ

2

Вы на правильном пути, используйте задачу manifestclasspath. Атрибут jarfile используется для создания относительных ссылок на банки, содержащиеся в наборе файлов.

<manifestclasspath property="jar.classpath" jarfile="${client_work_dir}/HelloWorld.jar"> 
    <classpath> 
    <fileset name="" dir="${client_work_dir}/lib" includes="*.jar"/> 
    </classpath> 
</manifestclasspath> 

<jar jarfile="${client_deploy_dir}/HelloWorld.jar" basedir="${client_work_dir}/compiled"> 
    <manifest> 
     <attribute name="Main-Class" value="HelloWorld.Main"/> 
     <attribute name="Class-Path" value=""${jar.classpath}"/> 
     </manifest> 
    </jar> 
+0

При тестировании этого решения на Ant 1.9.4 я получаю сообщение об ошибке «manifestclasspath не поддерживает вложенный элемент набора файлов». –

+0

@ Sèb Thx, мой плохой. Я скорректировал этот пример, чтобы включить теги «classpath». –

0

ЗАКАНЧИВАТЬ муравей pathconvert задача. Вы можете использовать это, чтобы развернуть существующий набор файлов в список файлов.

+0

Да, pathconvert действительно помогает мне. Я устанавливаю атрибут pathsep = "$ {line.separator} lib /". –

+0

Нет необходимости в pathconvert. Задача manifestclasspath способна генерировать относительные ссылки на возможный jarfile. –

Смежные вопросы