2010-05-08 2 views
2

Рассмотрим следующую структуру каталогов:Как jar исходные файлы java из разных (подкаталогов) каталогов?

./source/com/mypackage/../A.java 
./extensions/extension1/source/com/mypackage/../T.java 
./extensions/extension2/source/com/mypackage/../U.java 
... 
./extensions/extensionN/source/com/mypackage/../Z.java 

Я хочу, чтобы получить исходный баночку со следующим содержанием:

com/mypackage/../A.java 
com/mypackage/../T.java 
com/mypackage/../U.java 
... 
com/mypackage/../Z.java 

Я знаю, что я мог бы использовать набор файлов для каждого исходного каталога. Но есть ли простое решение с использованием ANT без необходимости явно ссылаться на все расширения?

ответ

1

Как сгладить все файлы, которые будут включены в архив, в одну структуру каталогов, а затем архивировать оттуда?

Используйте regexpmapper сделать выравниваться во время копирования, что-то вроде этого:

<delete dir="merged" /> 
<mkdir dir="merged" /> 

<copy todir="${basedir}/merged"> 
    <fileset dir="${basedir}"> 
     <include name="source/**"/> 
     <include name="extension*/**"/> 
    </fileset> 
    <regexpmapper from=".*source/(.*)" to="\1" /> 
</copy> 

<jar destfile="mypackage.jar" filesonly="yes"> 
    <fileset dir="merged"> 
     <include name="**" /> 
    </fileset> 
</jar> 
+0

Спасибо за предложение Мартина. Это сделал трюк. Регулярное выражение - недостающая часть. Мне нужно было добавить атрибут handledirsep = "true" в mapper, чтобы он работал в Windows. – Holger

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