Как заставить maven yuicompressor и плагины tomcat играть хорошо - PullRequest
2 голосов
/ 01 декабря 2011

Я хотел бы сжать все мои файлы JavaScript и объединить их используя YUICompressor, и я увидел, что есть плагин Maven, чтобы позволить мне сделать это. Я получил это работает по большей части.

Я также использую плагин Mojo Tomcat. Когда я иду, чтобы запустить tomcat: запустить цель, tomcat не читает из выходных данных цели каталог (это где компрессор YUI положить мои файлы JavaScript) - а точнее, он читает из фактических исходных файлов в моем "src / main / webapp / scripts "каталог. Конечно, агрегированный файл javascript (all.js) там нет.

У меня есть несколько вопросов.

  1. Как мне получить плагин tomcat для чтения выходной папки цели что создал плагин компрессора yui?

  2. Нужно ли запускать цель yui compressor maven каждый раз, когда я хочу обновить файлы javascript во время разработки?

  3. Есть ли лучший способ добиться этого? По сути, моя конечная цель чтобы иметь возможность разрабатывать JavaScript и тестировать мои исходные файлы в режим разработки, но я хочу сжать и объединить файлы и использовать скрипт all.js, когда приложение работает в рабочей среде режим.

Хотя люди из Rails наверняка поняли это, похоже, быть нетривиальным, что делать с Maven и Spring.

Буду признателен за любую помощь, как я могу получить это работает правильно. Спасибо!

Ответы [ 2 ]

1 голос
/ 03 августа 2012

Я только что исследовал эту проблему и нашел свой ответ, посмотрев документацию к плагину .

mvn tomcat: run - Запускает текущий проект как динамическое веб-приложение. используя встроенный сервер Tomcat.

На практике это означает, что фаза выполнения пакета не была достигнута при запуске встроенного tomcat.

Ответ предназначен для использования:

mvn tomcat: run-war - Запускает текущий проект как упакованный веб приложение, использующее встроенный сервер Tomcat.

Это позволяет сборке maven получать пакеты WAR-файла и, следовательно, yuicompressor-maven-plugin делать все, что нужно, до запуска встроенного tomcat.

0 голосов
/ 03 августа 2012

Что касается необходимости запускать его каждый раз, вы должны присоединить запуск плагина yui к фазе выполнения «generate-sources».

Добавьте следующее в ваш плагин (важной частью является "элемент фазы ", чтобы прикрепить его к жизненному циклу):

  <plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <executions>
      <execution>
        <phase>generate-sources</phase>
        <goals>
          <goal>compress</goal>
        </goals>
      </execution>
    </executions>  
    <configuration>...</configuration>      
  </plugin>

Таким образом плагин будет запускать каждую сборку на этапе создания источников.Поэтому каждый раз, когда вы меняете свои java-скрипты, для которых вы настроили плагин, выходной файл .js будет обновляться, как только вы запустите что-то вроде:

mvn compile
mvn test
mvn install
mvn package

и т. Д.


Приведенное выше описание приводит к тому, что минимизированные (и, возможно, агрегированные) файлы создаются ранее в жизненном цикле, но tomcat: run не может их найти!

...