Eclipse знайомство з ant

Коли мова йде про використання інтегрованого середовища розробки (IDE), часто доводиться стикатися з думкою про те, що її функціонал занадто надмірний для вирішення повсякденних завдань. Частка правди в цьому є: з'являються нові сутності, незнайомі механізми, багато налаштувань, про які раніше не доводилося замислюватися. Однак не варто забувати, що робота в IDE - абсолютно новий рівень розробки і багато звичні завдання в ній вирішуються по-іншому. Принадність інтегрованого середовища в тому, що у розробника є можливість зібрати під одним дахом (тобто в одній програмі) багато різних інструментів, які будуть не тільки вирішувати різні завдання, але і тісно взаємодіяти один з одним. Таким чином, перед розробником відкриються абсолютно нові способи роботи над проектом.

Apache Ant відомий будь-якій Java-програміста: це популярний інструмент збірки ПЗ (build tool), повністю написаний на Java. Його підтримують всі IDE: NetBeans. IntelliJ IDEA. Eclipse. Сценарій збірки Ant є простим XML-файл. Незважаючи на всю свою Java-спрямованість, і звичайні веб-розробники користуються цим інструментом для вирішення своїх завдань.

Hello world!

Eclipse знайомство з ant


  1. Створимо новий проект і назвемо його, наприклад, ant-test.
  2. У цьому проекті створимо новий файл з ім'ям build.xml. Файл повинен відразу ж відкритися в Ant Editor.
  3. Запишемо туди ось такий сценарій:
  • Відкриємо вид Ant: Window → Show View → Other.

    Eclipse знайомство з ant


  • У щойно відкритому вигляді натискаємо на іконку, знаходимо файл build.xml і двічі клікаєм по ньому. Тепер в цьому виді відображається наш сценарій, який дуже зручно тестувати.
  • Розкриємо список my_test_project і зробимо подвійний клік по hello-world. В консолі повинна з'явиться напис Hello world!

  • Eclipse знайомство з ant

    Розглянемо докладніше структуру сценарію. Батьківським елементом є з атрибутом name - це назва сценарію побудови.

    усередині тега знаходиться тег . всередині якого - . Тут ми підходимо до двох важливих понять Ant, які спочатку можуть трохи заплутати: це цілі (targets) і завдання (tasks). В даному випадку ми виконали мета hello-world (обов'язковий атрибут name у тега ) За допомогою завдання . Щоб легше було запам'ятати, пропоную користуватися наступними правилами: мета вказує, що саме потрібно зробити, а завдання - за допомогою чого досягається мета.

    Щоб краще освоїтися з Ant, давайте створимо щось корисне, наприклад, актуальне на сьогоднішній день стиснення набору js-файлів за допомогою YUICompressor.

    Приступимо до написання сценарію. Визначимося, з якою метою ми хочемо досягти. Нам потрібно побудувати бібліотеку lib.js (перша мета), для чого потрібно об'єднати всі файли в один (друга мета) і стиснути їх (третя мета). Ось приблизний сценарій:

    Відразу розглянемо всі нові елементи і атрибути. У елемента з'явився атрибут default - це мета або набір цілей, які будуть виконуватися за замовчуванням при виклику цього сценарію. Нам це знадобиться трохи пізніше. Атрибут basedir задає директорію, щодо якої є рівною все відносні шляхи до файлів і тек. Його вказувати необов'язково, за замовчуванням він дорівнює абсолютному шляху до проекту, в якому знаходиться сценарій.

    Як видно з прикладу, у нас є точка входу - мета build-lib (атрибут default у ), Яка залежить від двох інших цілей: concat-files і minify. Об'єднання (конкатенація) файлів виконується за допомогою завдання . в атрибуті destfile вказуємо, в якій файл хочемо зберегти результат. За те, які саме файли і в якій послідовності повинні бути об'єднані, відповідає файловий ресурс . який ми віддаємо завданням . Думаю, тут все зрозуміло: в атрибуті dir вказуємо, в якій директорії потрібно шукати файли, а за допомогою елементів задаємо конкретні файли. Типів ресурсів існує досить багато, більшість з них потрібні Java-програмістам. Для нас найбільш затребуваними будуть і . Основна їх відмінність в тому, що в першому випадку вказується чіткий набір файлів, а в другому - задається набір файлів за допомогою патернів включення і виключення. Наприклад, зараз ми могли б замінити на таку конструкцію:

    Але у цього способу є ряд недоліків. По-перше, в набір потраплять абсолютно всі файли з розширенням js в папці js_src, що не завжди потрібно на реальних проектах. А по-друге, навіть якщо вказати в патернах назви файлів, цей ресурс не гарантує той порядок проходження, в якому ви хочете їх об'єднати. Тобто якщо важливо, в якому порядку повинні об'єднуватися файли, краще ставити набір через .

    У наведеному прикладі бентежить те, що шлях до папок жорстко зашиті в код сценарію, тому давайте винесемо їх в окремі властивості:

    Властивості в Ant задаються за допомогою тега . Властивості дуже схожі на константи в мовах програмування: задавши один раз, ви більше не зможете поміняти їх під час виконання сценарію. Звертатися до властивостей слід через конструкцію $. Властивості можна задавати не тільки всередині . але і всередині . а також глобально для всього IDE через Preferences → Ant → Runtime → Properties.

    Господині на замітку

    Перевірте роботу сценарію: зробіть подвійний клік в Ant View на цілі build-lib. У вас в папці js повинен з'явитися файл lib.js, в якому буде вміст всіх трьох файлів. Якщо файл не з'явився, поновіть (Refresh) папку js в Project Explorer.

    Файли об'єднувати ми навчилися, тепер навчимося стискати їх за допомогою YUICompressor. Сам розробник цієї чудової бібліотеки рекомендує скористатися послугами професійного компресор як зовнішню програму, ми ж зробимо куди цікавіше: створимо окрему задачу, яка буде стискати файли.

    Модульна структура Ant дозволяє розширювати його, дописуючи нові завдання на Java. Зараз ми навчимося одному із способів додавання таких завдань в сценарій збірки.

    1. Скачайте YUICompressor і розпакуйте кудись архів, наприклад, в папку C: \ yuicompressor.
    2. Скачайте YUIAnt.jar і покладіть його в папку build, де ви розпакували YUICompressor (C: \ yuicompressor \ build).
    3. Додайте ось таку конструкцію в сценарій всередину тега :

    За допомогою неї ми створили нову задачу . Щоб вона працювала, потрібно вказати повний шлях до Java-класу цього завдання (com.yahoo.platform.yui.compressor.YUICompressTask), а також вказати шлях, де знаходиться файл з цим класом ( / ). Тепер можна дописати мета minify:

    Ми викликали завдання . вказавши їй набір файлів, які необхідно стиснути, за допомогою конструкції . Так як ми використовуємо завдання, а не виклик зовнішнього файлу, Ant Editor сам підхопив потрібний клас і тепер видаватиме code complete по атрибутам завдання . Підсумковий сценарій збірки виглядає так:

    Перевірте роботу мети build-lib. в папці js у вас повинен виявитися потиск lib.js.

    збірка проекту

    А тепер перейдемо до найцікавішого. Зручність інтеграції Ant з Eclipse полягає не в тому, що ви можете в будь-який момент викликати потрібну мета з віконця, а в тому, що ви можете вказати збирач для проекту.

    Eclipse знайомство з ant

    Зайдіть у властивості проекту ant-test (Project → Properties) і перейдіть в пункт Builders. Натисніть кнопку New і в діалоговому вікні виберіть Ant Builder. У вікні задайте яке-небудь ім'я вашого збирачеві (наприклад, My first Ant build). Тепер потрібно вибрати сценарій (buildfile). Натисніть на кнопку Browse workspace і в проекті ant-test виберіть файл build.xml. Перейдіть на вкладку Refresh і відзначте пункти Refresh resources upon completition і The project containing the selected resource. Це означає, що після роботи збирача буде автоматично оновлюватися список файлів проекту, тому в Project Explorer ви завжди будете бачити актуальну версію проекту. Перейдіть у вкладку Targets, там ви побачите список цілей, які будуть виконуватися при різних типах збірки. Зокрема, в розділах After a «Clean» і Manual build буде вказано default target selected. Це означає, що буде виконуватися мета, зазначена за замовчуванням у проекту (пам'ятаєте атрибут default у ?). Давайте ще вкажемо мета в Auto build, для цього натиснемо на кнопку Set targets зправа від Auto Build і відразу натиснемо на ОК - буде обрана мета за замовчуванням.

    Тепер ми можемо викликати збирач після натискання на Project → Build Project (на цю команду можна повісити гарячі клавіші). А якщо виберемо опцію Project → Build Automatically, то нам навіть нічого робити не треба: проект буде сам збиратися при будь-якій зміні будь-якого файлу проекту.

    Eclipse знайомство з ant

    Таким чином, ми прийшли до абсолютно прозорою автоматизації рутинних завдань при роботі в IDE. Все, що необхідно зробити, - створити простий сценарій, вказати його як збирачі і включити опцію автоматичного складання. Кожен раз, коли ви вносите проект (редагуєте, видаляєте і додаєте файли) всі необхідні дії будуть виконуватися у фоновому режимі, не відволікаючи розробника. Це особливо корисно при роботі в команді: будь-який розробник може внести зміни в сценарій, які будуть автоматично виконуватися у всіх інших.

    У цій статті були поверхово розглянуті деякі базові прийоми роботи з Ant. Раджу ознайомитися зі списком стандартних завдань. там є такі корисні речі, як синхронізація каталогів та завантаження файлів по FTP, виконання SQL-запитів, XSL-трансформації, архівація файлів і багато іншого.

    Подивитися на Ant в дії можна в студійній лекції для технологів.

    - скрінкасти (Квіктайм, 101 МБ)

    Схожі статті