2013-05-25 2 views
18

У меня есть 100s файлов javascript внутри иерархии папок, и я хочу два набора выходных данных. один должен иметь конкатенированную версию для целей отладки, а другой - иметь версию concat + minfy. В настоящее время я использую подключаемый модуль ниже, но в этом я должен предоставить каждый файл, который мне нужно, чтобы минимизировать. Я ищу плагин, который нуждается только в родительской папке и удовлетворяет вышеуказанным условиям.Maven плагин для concat и minify javascript

<groupId>com.samaxes.maven</groupId> 
<artifactId>minify-maven-plugin</artifactId> 
<version>1.7</version> 

ответ

14

Вы должны взглянуть на yui compression maven plugin, который звучит как что вам нужно.

+0

Да, я использовал его, но не правильно. Мне не хватало совокупности ресурсов. – Mady

32

YUI compression maven plugin работал для меня. Я покажу, что я сделал, чтобы заставить его работать.

  • Объединяет все JS файлы, я агрегация.

Сведения о используемых элементах.

  • preProcessAggregates - Чтобы обработать агрегацию, прежде чем минификация.
  • aggregations - Объединение нескольких ресурсов в иерархии папок в один файл.
  • агрегация - В родительских агрегатах может быть несколько элементов агрегации.
  • insertNewLine - Вставьте новую строку после каждого файла eof, в то время как конкатенация/агрегация файлов.
  • inputDir - Родительский каталог, внутри которого будут искать файлы для конкатенации/агрегации.
  • sourceDirectory - Директория, в соответствии с которой файлы будут искаться для минимизации.
  • outputDirectory - Директория, в соответствии с которой будет размещен разреженный выход.
  • nosuffix - Если установлено значение true, плагин не добавит '-min' в миниатюрный файл.

Есть 2 вида <exclude> собственности: -

  • Первая является частью агрегации, которая в основном исключает файлы агрегации.
  • Вторая часть является частью плагина, чтобы исключить файлы из минификсации.

код плагина: -

<plugin> 
    <groupId>net.alchim31.maven</groupId> 
    <artifactId>yuicompressor-maven-plugin</artifactId> 
    <version>1.3.2</version> 
    <configuration> 
    <preProcessAggregates>true</preProcessAggregates> 
    <aggregations> 
     <aggregation> 
     <insertNewLine>true</insertNewLine> 
     <output>${basedir}/target/single.js</output> 
     <inputDir>${basedir}/src/main/resources/js</inputDir> 
     <includes> 
      <include>**/*.js</include> 
     </includes> 
     <excludes> 
      <exclude>**/*abc.js</exclude> 
      <exclude>**/compressed.css</exclude> 
     </excludes> 
     </aggregation> 
    </aggregations> 
    <excludes> 
     <exclude>**/*-min.js</exclude> 
     <exclude>**/*.min.js</exclude> 
     <exclude>**/*-min.css</exclude> 
     <exclude>**/*.min.css</exclude> 
    </excludes> 
    <jswarn>false</jswarn> 
    <nosuffix>false</nosuffix> 
    <sourceDirectory>${basedir}/target</sourceDirectory> 
    <outputDirectory>${basedir}/target</outputDirectory> 
    </configuration> 
    <executions> 
    <execution> 
     <id>compress_js_css</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>compress</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
+0

В качестве альтернативы, плагин можно найти здесь: http://davidb.github.io/yuicompressor-maven-plugin/ – Stephan

+0

Почему @Mady установил nosuffix на false? как правило, вы только заботитесь о развертывании мини-версии? http://alchim.sourceforge.net/yuicompressor-maven-plugin/index.html – DPM

4

Мади, Minify Maven плагин делает также поддержку включения/исключения моделей.
Пожалуйста, посмотрите примерную страницу Lexicographical ordering из документации по плагину.

+0

Спасибо, Сэмюэль, да, это хорошо работает, но закрытие jsEngine не в состоянии минимизировать, оно ломается в какой-то момент. Первоначально я был склонен к закрытию, поэтому я использовал плагин minify-maven. – Mady

Смежные вопросы