Как указать файлы для включения в файл WAR?

Мне нужно создать файл WAR, который содержит только файлы статического содержимого (gifs, jpg, html, js и т. д.). У меня есть структура каталогов, содержащая все файлы, и мне нужно создать файл WAR с помощью задачи сборки ANT (1.5.1). Прямо сейчас у меня есть это в задаче ANT:

<war destfile="${output.file}" webxml="WEB-INF/web.xml" basedir="${basedir}">
    <fileset dir="${basedir}/sales" />       
</war>

Файлы, которые я хочу включить, находятся в C:/basedir/sales и его подкаталогах. Когда я пытаюсь запустить эту задачу, я получаю «Zip-файл не может включать сам себя». Так что явно помещать туда этот набор файлов - неправильный способ сделать это. Я не совсем понимаю, что мне нужно указать в задаче и в файле web.xml, чтобы указать, какие файлы включать в архив.


person Brian Schroth    schedule 24.11.2009    source источник


Ответы (1)


Я думаю, что baseir="${basedir}" вызывает у вас проблемы. Кроме того, я думаю, что то, как вы это написали, потребует, чтобы файл web.xml существовал внутри каталога WEB-INF относительно того, откуда вы запускаете ant.

Итак, попробуйте создать /WEB-INF/web.xml следующим образом:

<?xml version="1.0" encoding="utf-8" ?>

<web-app>
</web-app>

Затем попробуйте обновить /build.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<project name="yourproject" basedir="." default="war" xmlns:ivy="antlib:org.apache.ivy.ant">
        <target name="war" description="--> build war file">
                <war destfile="./mywar.war" webxml="WEB-INF/web.xml">
                    <fileset dir="C:/basedir/sales" />
                </war>
        </target>
</project>

Затем вы сможете запустить «ant war» из командной строки, и он должен создать «mywar.war» в вашем текущем каталоге.

person Upgradingdave    schedule 24.11.2009
comment
baseir определен в проекте как ../.., сборка запускается с помощью сценария .cmd, расположенного в C:/basedir/build/ant, поэтому ../.. правильно ссылается на C:/basedir... проект определяется как ‹имя проекта=пример по умолчанию=война на основеир=../..›. - person Brian Schroth; 24.11.2009
comment
Я обнаружил, что мои ошибки были вызваны совершенно другой проблемой, и синтаксис здесь был в порядке. Спасибо за помощь. - person Brian Schroth; 24.11.2009