Как заставить плагины maven yuicompressor и tomcat играть хорошо

Я хотел бы сжать все мои файлы javascript и агрегировать их с помощью YUICompressor, и я увидел, что для этого есть плагин maven. У меня это работает по большей части.

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

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

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

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

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

В то время как разработчики Rails, безусловно, поняли это, это кажется нетривиальной задачей для Maven и Spring.

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


person egervari    schedule 01.12.2011    source источник


Ответы (2)



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

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

  <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 не может их найти!

person Matt    schedule 03.08.2012