Javascript web app и Java server, построить все в Maven или использовать Grunt для веб-приложения?



мы делаем веб-приложение с AngularJS, и нам нравится идея использования Bower для управления зависимостями и Grunt для построения, запуска тестов и т. д. (старшина)



сервер выполняется с Java с помощью Maven, поэтому, конечно, мы хотели бы с простым mvn install построить все (веб-приложение + сервер)



Итак, какой подход вы приняли и почему?



1) рассматривать их как два разных приложения, что на самом деле они являются. Так что используя разные методы/инструменты построения приемлемы.



2) Забудьте о Grunt Bower, используйте Плагины Maven для сборки, запуска тестов, управления зависимостями для веб-приложения. Если это так, то какие?



3) используйте плагин Maven exec для вызова Grunt для создания интерфейсного веб-приложения. Я вижу это больше Хак, чем решение.



4) Другие.



подход легче интегрировать с Дженкинсом является плюсом.



спасибо заранее!

621   5  

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

    Ничего не найдено.