Задача Ant jar - включить файлы, не находящиеся ниже

Я пытаюсь написать цель-муравей, которая создаст банку на основе набора java-файлов и некоторых файлов свойств, но у меня возникают проблемы с включением файлов свойств в том виде, в котором проект настроен в настоящее время.

Вот мои мишени для муравьев:

1 - Скомпилируйте исходные файлы java из папки «myjar.src» и поместите полученные классы в папку «myjar.classes». Как только это будет сделано, скопируйте все файлы, отличные от .java, из myjar.src в myjar.classes.

2 - Создайте банку, используя команду «jar», используя basedir = $ {myjar.classes}, и скажите ей, чтобы она включала все.

Вот какие мишени для муравьев мне нужны:

1 - Скомпилируйте исходные файлы java и поместите полученные классы в папку myjar.classes. Включены только файлы .java

2 - Создайте банки с помощью команды «jar», используя basedir = $ {myjar.classes.location}, но также включите файлы .properties и .xml из «myjar.src».

Ключевое различие в том, что я хочу, чтобы свойства и файлы xml из myjar.src были включены при упаковке классов в myjar.classes с помощью basedir = $ {myjar.classes}. Как мне включить эти файлы, когда они не находятся под myjar.classes?

Это цель муравья, которую я хочу изменить:

<CreateManifest title="myjar classes etc"/>
        <jar 
            destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
            basedir="${myjar.classes}" 
            manifest="${manifest}">
            <include name="**"/>
        </jar>

Причина, по которой я не просто использую каталог на один уровень выше для basedir, заключается в том, что ни один из других вызовов создания jar-файлов в проекте не делает этого, и я не решаюсь изменить это только для этого. Я действительно пытался это сделать, но не смог указать правильный каталог. (Существуют и другие банки, в которых используется аналогичная структура каталогов, и я не хочу вмешиваться в них ни сейчас, ни в будущем.) Мне просто интересно, может ли это лучший способ сделать это? Большое спасибо.


person kevinh    schedule 11.09.2014    source источник


Ответы (1)


Мне удалось выяснить это отсюда: Как для включения файла в Jar через Ant в определенном месте

В конце концов, это был мой модифицированный муравейник:

    <CreateManifest title="myjar classes etc"/>
    <jar 
        destfile="${myProject.build.jars.dir}\ta_test_driver.jar" 
        basedir="${myProject.classes}\ta_test_driver" 
        manifest="${manifest}">
        <include name="**"/>
         <zipfileset dir="${myjar.src}" 
            includes="**/*.xml, **/*.properties, **/*.gif"
            />   
    </jar>

Обратите внимание на тег zipfileset.

person kevinh    schedule 11.09.2014