Javascript web app и Java server, построить все в Maven или использовать Grunt для веб-приложения?
мы делаем веб-приложение с AngularJS, и нам нравится идея использования Bower для управления зависимостями и Grunt для построения, запуска тестов и т. д. (старшина)
сервер выполняется с Java с помощью Maven, поэтому, конечно, мы хотели бы с простым mvn install построить все (веб-приложение + сервер)
Итак, какой подход вы приняли и почему?
1) рассматривать их как два разных приложения, что на самом деле они являются. Так что используя разные методы/инструменты построения приемлемы.
2) Забудьте о Grunt Bower, используйте Плагины Maven для сборки, запуска тестов, управления зависимостями для веб-приложения. Если это так, то какие?
3) используйте плагин Maven exec для вызова Grunt для создания интерфейсного веб-приложения. Я вижу это больше Хак, чем решение.
4) Другие.
подход легче интегрировать с Дженкинсом является плюсом.
спасибо заранее!
5 ответов:
после работы с каждым инструментом конвейера активов в Java toolkit некоторое время я пришел к нескольким выводам:
Java На Основе Инструментов
есть несколько инструментов, но наиболее популярными являются JAWR и Wro4J. самая большая проблема с обоими из них заключается в том, что они в основном носорог на основе (WRO4J теперь имеет некоторую поддержку узла) и Носорог собака медленно по сравнению с узлом на основе инструментов. Вы также должны учитывать, что инструментарий JavaScript быстро созревает, так что вы должны искать инструменты, которые могут двигаться быстро.
WRO4J - поддержка отличная, интеграция Maven и Eclipse велика список плагинов обширен, а структура достаточно гибкая, чтобы с помощью некоторой смазки локтя вы могли написать плагин для всего, что вам нужно. Если вы ограничены конвейером активов на основе Java,это наверняка путь. Проблема с Wro4j заключается в том, что он медленный ( даже когда он запускает процессы узла ) относительно инструментов на основе узлов.
Чтобы дать некоторые реальные номера компиляции и конкатенации 25 пакетов активов, содержащих меньше, CSS CoffeeScript и JavaScript занимает около ~35s при использовании Rhino и ~15s с использованием поддержки узлов Wro4j на iMac 2013 с 16G оперативной памяти. Используя грунт+узел занимает около 2s на моем маленьком MacBook Air.JAWR - интеграция и список функций довольно хороши, но документы не велики и пишут свои собственные плагины могут быть немного сложнее. Когда я первоначально написал этот пост, JAWR был в середине 4-летнего перерыва, но теперь вернулся в активную разработку с января 2014 года. Если вы решите исследовать инструменты Java, это стоит исследовать.
инструмент на основе узлов (интегрирован с сборками Ant/Maven)
грунт - это легко, имеет фантастическую экосистему плагинов, и сообщество огромно. Если есть что-то, что вам нужно сделать могу поспорить, что для него есть плагин - возможно, даже один, написанный создателями grunt. Основная критика Grunt заключается в том, что он управляется конфигурацией, что упрощает настройку, но не является "узловым способом"."Также стоит упомянуть, что задачи Grunt нелегко комбинируются, поэтому для сложного конвейера сборки JavaScript Grunt может быть не идеальным.
залпом - глоток-это быстро растущая альтернатива хрюканью. Одновременно по умолчанию и использует потоки чтобы избежать временных записей в файловую систему, которые могут значительно ускорить вашу сборку. Gulp очень идиоматичен и имеет акцент на коде > конфигурации, и хотя это дает вам много власти, это не идеально подходит для команд, которые не имеют основной компетенции в JavaScript.
единственный потенциал зависания для инструментов на основе JavaScript заключается в том, что вам нужно будет иметь узел,npm и грунт-интерфейс командной строки/залпом по любому машина, которая должна сделать компиляцию. Если у вас нет доступа к вашим компьютерам CI или вы не используете развертывание на основе артефактов, это может быть трудно продать.
Интеграция в ваш проект Maven довольно легко и у вас есть довольно много вариантов. Вы можете использовать Maven АНТ-запустить плагин, вы можете запустить ant exec task и вызвать его из Maven или лучше всего вы можете просто использовать Maven exec task.
Ниже приведен код для интеграции это в жизненный цикл Maven с помощью плагина exec, если это кому-то полезно.<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <phase>prepare-package</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>grunt</executable> </configuration> </plugin>
для тех, кто все еще ищет дополнительную информацию по этой теме, у одного из создателей Yeoman есть хорошая статья (написанная через несколько месяцев после того, как этот вопрос был первоначально задан), которая расширяет оригинальный ответ с немного более подробной информацией:
тогда есть также интерфейс-maven-плагин:https://stackoverflow.com/a/19600777/320399 Он загружает Node и npm для вас (локальный проект), загружает грунт через что НПМ (в ведении этого узла), а затем запускает грунт (через этот узел). Это Самозагрузка, и Вам не нужен узел, установленный на машине, чтобы построить проект. Только одна команда; mvn install.
вы можете проверить http://jhipster.github.io/: это генератор Yeoman, который генерирует приложение, которое имеет Maven, Grunt и Bower все работают вместе.
Это немного похоже на ваш третий вариант, но все настроено для вас, что не так уж легко. Он также генерирует основные службы AngularJS и Java REST для вас.
после нескольких часов, проведенных над этой проблемой, я могу сказать так:
maven и grunt не играют хорошо,но это может быть применено..
здесь описание плагина для запуска Grunt через Maven build
надеюсь, это поможет :)
Comments