Добрый день, коллеги!
Хотел поделиться своими наработками в области автоматизации процесса сборки javascript проекта использующего Google Closure Compiler и Google Closure Library при помощи Apache Maven. Страничка проекта https://github.com/urmuzov/closure-maven, там же лежит документация по каждому из компонентов проекта.
Главный компонент проекта — это архетип. Архетип объединяет в себя все остальные компоненты проекта, которые при желании могут использоваться отдельно от него.
Архетип предоставляет средства для решения самых часто встречающихся задач при разработке, а именно:
Хотел поделиться своими наработками в области автоматизации процесса сборки javascript проекта использующего Google Closure Compiler и Google Closure Library при помощи Apache Maven. Страничка проекта https://github.com/urmuzov/closure-maven, там же лежит документация по каждому из компонентов проекта.
О проекте
Главный компонент проекта — это архетип. Архетип объединяет в себя все остальные компоненты проекта, которые при желании могут использоваться отдельно от него.
Архетип предоставляет средства для решения самых часто встречающихся задач при разработке, а именно:
- Запаковывает javascript код в maven артефакты для распространения (такие артефакты содержат помеченные пакеты специальной структуры, названные closure-packages);
- Распаковывает closure-packages из подключенных в
<dependencies>
артефактов для компиляции; - Помогает в объединении и оптимизации js и css файлов при помощи Web Resource Optimizer for Java (wro4j);
- Предоставляет 5 профилей компиляции для разных целей:
compiled
— для «боевой» сборки проекта. Уровень компиляцииADVANCED_OPTIMIZATIONS
;merged
— для склеивания всех исходных js файлов в один, фактически без компиляции. Уровень компиляцииWHITESPACE_ONLY
, форматированиеPRETTY_PRINT
;sources
— для дебага javascript файлов в бразуере. Компиляция происходит как и в профилеcompiled
, но в html будут подключены файлы с исходными кодами;sources-no-compile
— для дебага html/css файлов. Компиляции не происходит, просто в html подключаются файлы с исходными кодами;jar
— для сборки jar-архива для распространения;
- Генерирует jsdoc и jslint отчеты при выполнении
mvn site
.