Зачем я написал эту статью? Я в последнее время удалял черновики и наткнулся на //infostart.ru/public/181935/. Хотел было ее удалить, да за нее уже проголосовали. Ну раз она кому-то да нужна, по-быстрому написал описание к ней, что к чему и опубликовал. Но радовался я рано. Видать не любит у нас народ поиском пользоваться. Попробую кратко в цикле статей описать те инструменты, которые я использовал для получения результата.
Начну с цитаты Википедии:
Apache Ant (англ. ant — муравей и акроним — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make (в качестве «Makefile» применяется «build.xml»).
Ant был создан в рамках проекта Jakarta, сегодня — самостоятельный проект первого уровня Apache Software Foundation.
Первая версия была разработана инженером Sun Microsystems Джеймсом Дэвидсоном (James Davidson (англ.)русск.), который нуждался в утилите, подобной make, разрабатывая первую референтную реализацию J2EE.
Ant, в отличие от другого сборщика проектов Apache Maven, обеспечивает императивную, а не декларативную сборку проекта.
Устанавливается он крайне просто. В Windows(tm) качаем архив, распаковываем и в свойствах системы добавляем к переменной среды %PATH% путь к bin каталогу анта. В linux все еще проще apt-get install(Debian/Ubuntu) ant или yum install ant(Fedora/Red Hat), или pkg-add -r ant(FreeBSD) и т.д.
Далее команды с комментариями в UNIX стиле:
1. mkdir ant_test # создаем каталог проекта
2. mkdir .ant # создаем каталог для свойств и прочих файлов
3. touch .ant/project.properties # здесь будем хранить значения переменных
4. touch build.xml # Файл сборки
5. cat build.xml # Добавляем содержание
6. ant # Запускаем
Buildfile: /home/awk/ant_test/build.xml
BUILD FAILED
Target "help" does not exist in the project "1C".
Total time: 0 seconds
Вывод нам рассказал, что в описанном нами проекте по имени 1С не существует цель по умолчанию.
Давайте ее создадим.
И запустим ант
ant
Buildfile: /home/awk/ant_test/build.xml
help:
BUILD SUCCESSFUL
Total time: 0 seconds
Здорово, но абсолютно бесполезно.
Что бы что-то получилось в цель надо добавить задачу. Например: сделаем архивацию базы.
Для начала напишем справку
И проверим ее работу:
ant
Buildfile: /home/awk/ant_test/build.xml
help:
[echo] ant backup - Запуск архивации
BUILD SUCCESSFUL
Total time: 0 seconds
xml узел echo - это задача. Данная задача выводит на экран то, что вы в ней напишете. Теперь давайте напишем саму цель backup
Для начала можно посмотреть справку.
Затем добавим цель и задачу в файл build.xml:
И переменные в файл:.ant/project.properties
echo "bin1C.exec=[путь к программе 1С]" >> .ant/project.properties
echo "bin1C.db.key=[Ключ расположения базы /F или /S]" >> .ant/project.properties
echo "bin1C.db.value=[путь к базе имя файла или сервер\база]" >> .ant/project.properties
echo "bin1C.backup.key=[ключ выгрузки ИБ /DumpIB]" >> .ant/project.properties
echo "bin1C.backup.valuee=[путь куда выгружать]" >> .ant/project.properties
Теперь о том, что мы с вами добавили.
Узел property - здесь мы задали файл где искать файл со свойствами.
Задача exec - здесь мы указали программу для запуска и ее параметры. Атрибут value говорит о том, что это один параметр (даже если он содержит пробелы). А атрибут line - что это несколько параметров разделенных пробелами.
Далее можно запустить ant backup и проверить создался ли файл.
Смысл появился, но все это можно сделать и обычными скриптами. В чем профит? А профит в следующем:
1. Наши настройки действий не зависят от операционной системы. Действия (цели и задачи) настраиваем отдельно от свойств.
2. Любая задача может зависеть от другой задачи.
Давайте посмотрим на примере загрузки конфигурации. Перед ней надо сделать backup - это и реализуем.
cat .ant/project.properties # Файл настроек (моих)
bin1C.exec=/usr/bin/1cv8
bin1C.db.key=/F
bin1C.db.value=/home/awk/runtime-EclipseApplication/t5/db
bin1C.backup.key=/DumpIB
bin1C.backup.value=backup.dt
bin1C.upload.key=/LoadCfg
bin1C.upload.value=1cv8.cf
bin1C.upload.option=/UpdateDBCfg
Что нового мы добавили?
1. Узел upload
2. В узле upload мы сказали что он зависит от backup (depends="backup")
3. Заменили ключи выгрузки, на ключи обновления базы.
На этом пожалуй на первый раз стоит остановится. А пока можно пойти и посмотреть сколько задач умеет выполнять ант. Они начинаются от файловых операций (создание, удаление, архивирование файлов) и заканчиваются рассылкой почты и отправкой смс.
Напомню задачи берет на себя ант, а цели ему ставите вы.
P.S. К статье прикреплены два созданных файла которые указаны на скриншотах и в тексте. К сожалению я не понял как вставлять файлы xml в текст статьи и как прикреплять бесплатные файлы.