Try English version of Quizful



Раздаем бесплатные Q! подробности в группе Quizful.Alpha-test
Топ контрибуторов
loading
loading
Знаете ли Вы, что

Свои вопросы для тестов можно добавлять на странице с информацией о тесте. При этом для некоторых тестов добавление вопросов закрыто

Лента обновлений
ссылка Nov 16 17:00
Комментарий от Webs564418:
https://123sdfsdfsdfsd.ru/r.html?r=https%3A%2F%2Fbitn...
ссылка Nov 16 07:14
Добавлен вопрос в тест JavaScript - Основы
ссылка Nov 15 16:58
Комментарий от zzerron:
а еще нельзя делать так +-- или так --+. Зато можно дела...
ссылка Nov 15 16:54
Комментарий от daptaso:
А так же mixed, number, callback (callable), void
ссылка Nov 15 09:00
Добавлен вопрос в тест C++ - Основы
Статистика

Тестов: 153, вопросов: 8597. Пройдено: 420084 / 2049997.

Большое пособие по Apache Ant

head tail Статья
категория
Java Tools
дата16.07.2009
авторieronim
голосов18

[Disclaimer: Данная статья была переведена в рамках "Конкурса на лучший перевод статьи" на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Apache Ant - мощный инструмент для преобразования ваших структур разработки в структуры развертывания приложений. Он является декларативным и все инструкции командной строки, используемые для развертывания приложения, представляются простыми XML-элементами. Не вдаваясь в детали, данное пособие шаг за шагом расскажет вам как организовать сборку web-приложения с помощью одного-единственного XML-файла.


Моя структура разработки состоит из следующих каталогов:

   1. web - каталог для всех JSP, HTML, JavaScript-ов и таблиц стилей. Вы можете создать подкаталоги, если требуется, для каждого набора файлов;
   2. src - каталог для файлов java-классов, содержащая POJO или сервлеты;
   3. etc - каталог для всех конфигурационных файлов, вроде наиболее распространенного web.xml;
   4. lib - каталог для jar-файлов, необходимых для работы моего приложения. Я даже включил servlet-api.jar в этот каталог, так как вам, возможно, придется разворачивать ваше web-приложение на удаленном сервере после компиляции;
   5. build - временный каталог для хранения скомпилированных файлов;
   6. dist - каталог, куда будет помещен окончательно упакованный war-файл (дистрибутив);
   7. ant - каталог для файла build.xml и внешних properties-файлов.

Все эти каталоги находятся в родительской директории “WebApp“.

Вот три вещи, которые вам надо держать в уме для создания файла сборки Ant:

   1. tasks (задачи) - соответствуют инструкциям командной строки, например javac, war и т.д. Группа задач может выполняться последовательно с помощью указания целей.
   2. target (цель) - это что-то наподобие функции, в которой вы размещаете задачи, таким образом получая возможность повторно вызывать их без дублирования.
   3. properties (свойства) - используются для определения переменных в ваших файлах сборки, что очень полезно, в случае когда название проекта или названия директорий могут изменяться.

Одна из самых приятных особенностей Ant в том, что вы можете хранить файл свойств отдельно, вместо того, чтобы определять все переменные внутри файла сборки. Файлы свойств состоят из перечисления всех требуемых переменных и их значений в виде пар имя-значение и представляют собой обычный текстовый файл. В данном пособии я буду использовать внешний файл свойств.

При написании пособия, я использовал следующие инструменты:

   1. Java версии 1.5
   2. Apache Tomcat 5.0
   3. Apache Ant 1.6.5

Итак, мы готовы приступить к освоению Ant. Для этого создайте файл с именем “build.properties“. Это будет наш внешний файл с переменными:

root.dir=..
lib.dir=lib
src.dir=com
conf.dir=etc
web.content=web
project.name=WebApp
build.dir=build

ВНИМАНИЕ: обязательно нужно нажать ENTER, чтобы начать новую строку после последней, иначе Ant выдаст ошибку “BUILD FAILED for some unknown reason”

Нет необходимости давать переменным имена с точкой. Вы можете использовать такие имена как “projectName”, но значение не должно содержать кавычек. То есть НЕ должно быть чего-то вроде projectName=”WebApp”

Для создания файла сборки, мы должны помнить, какие действия необходимы для развертывания проекта. Чтобы упростить себе жизнь, просто создайте модули (targets), для всех действий при развертывании web-приложения:

   1. clean - удалить результаты предыдущих развертываний приложения, если они были
   2. init - создать необходимую структуру для развертывания
   3. compile - скомпилировать ваши сервлеты или POJO
   4. copy - скопировать скомпилированные файлы и web-содержимое в структуру развертывания, созданную модулем init
   5. war - создать war-файл и открыть браузер

Начните писать файл build.xml в каталоге ant следующим образом:
<project name="AppBuilder" default="war" basedir="..">
    <property file="ant/build.properties"/>
</project>
Теперь мы должны установить classpath для servlet-api.jar для компиляции наших сервлетов, поэтому поместите servlet-api.jar в каталог lib вашей структуры разработки. Проверьте свойство “default” у элемента <project>. В нем установлен ПОСЛЕДНИЙ модуль (target) файла сборки. В нашем случае это “war”

Все последующие XML-элементы будут размещены внутри <project></project>, созданного ранее. Напишите элемент для задания classpath,
<path id="classpath">
     <fileset dir="${lib.dir}" includes="servlet-api.jar"/>
</path>
Теперь вам надо прописать все необходимые jar-ы в classpath для успешной компиляции исходных файлов java. ${lib.dir} используется для получения значения переменной “lib.dir”, т.е. lib.

Теперь пройдемся по модулям (targets) упомянутым в списке выше:

1. clean

<target name="clean">
    <echo>Cleaning the ${build.dir}</echo>
    <delete dir="${build.dir}"/>
</target>

Здесь я удаляю каталог сборки на случай если он уже существовал с ранее скомпилированными файлами
Элемент <echo> служит только для вывода текущего действия в командной строке.

2. init
<target name="init" depends="clean">
    <echo>Creating the build directory</echo>
    <mkdir dir="${build.dir}/WEB-INF/classes"/>
    <mkdir dir="${build.dir}/WEB-INF/lib"/>
</target>
Здесь я создаю обычную структуру развертывания, требуемую для tomcat, а именно WebApp/WEB-INF/classes, и т.д. Не имеет значения, существовала ли директория WEB-INF до создания каталога classes. Ant автоматически создает все необходимые родительские каталоги, если их не было.

3. compile
<target name="compile" depends="init">
    <echo>Compile the source files</echo>
    <javac srcdir="${src.dir}" destdir="${build.dir}/WEB-INF/classes">
        <classpath refid="classpath"/>
    </javac>
</target>
Наиболее важный и наиболее богатый на ошибки шаг. Убедитесь, что classpath настроен корректно в элементе <path>. Если все сделано правильно, то все файлы в директории “src.dir” успешно скомпилируются и переместятся в build\WebApp\WEB-INF\classes. Обратите внимание на свойство “depends” элемента <target>. Оно используется для последовательной связи модулей (targets).

4. copy
<target name="copy" depends="compile">
    <copy todir="${build.dir}/WEB-INF">
        <fileset dir="${conf.dir}"/>
    </copy>
    <copy todir="${build.dir}">
        <fileset dir="${web.content}"/>
    </copy>
    <copy todir="${build.dir}/WEB-INF/lib">
        <fileset dir="${lib.dir}"/>
    </copy>
</target>
Здесь я просто копирую скомпилированные классы и web-содержимое в соответствующие каталоги структуры развертывания.

5. war
<target name="war" depends="copy">
    <echo>Building the war file</echo>
    <war destfile="${dist.dir}/${project.name}.war" webxml="${build.dir}/WEB-INF/web.xml">
        <fileset dir="${build.dir}"/>
    </war>
</target>
Это последний модуль (target) в моем файле build.xml, создающий WebApp.war, необходимый для развертывания. “war” - инструкция Ant которой вы передаете путь к web.xml и каталог содержащий структуру развертывания, то есть, в нашем случае, директорию “build”. destfile - окончательное расположение и имя war-файла, которое должно принять вид dist\WebApp.war после отработки скрипта.

Запуск скрипта

Сохраните build.properties и build.xml в каталоге ant. Убедитесь, что в переменной среде ANT_HOME прописан каталог bin для вашей установки ant. Теперь, все, что вам нужно сделать - запустить команду ant на файле сборки таким образом:

C:\> cd WebAppant\ant
C:\WebAppant\ant> ant

Вот и все. В случае успеха, ваши разработки в итоге станут полностью упакованным WebApp.war.

Заключительные слова

Итак, из наших исходных файлов, с помощью одного XML-файла и замечательного инструмента Ant, мы сделали полностью упакованный war-файл, готовый к развертыванию в tomcat manager. Можно копать глубже для создания сложного build.xml, использующего полный набор элементов, предоставляемый Ant-ом. Но цель данного пособия лишь ознакомить вас с использованием Apache Ant. Если у вас возникли какие-либо трудности в понимании конкретных элементов, пожалуйста, прочтите их подробное описание в документации Apache Ant.

----------
Оригинальный текст статьи: The Great Ant Tutorial - a great jump start

Если Вам понравилась статья, проголосуйте за нее

Голосов: 18  loading...
ieronim   googperson   googman   googler   admin   bioflash   c0nst   DartWaider   generator   elenina   makk   toroptsev   Fduchun   bu_ma_ga   cane   chehonadskih   Diesel31ks   jacksolovey