2016-03-11 3 views
0

Я использую Минимизировать Maven плагин с следующей конфигурацией в ПОМ -Minify Maven плагин, не добавляет Минимизированный файл Maven локальный репозиторий

<plugin> 
      <groupId>com.samaxes.maven</groupId> 
      <artifactId>minify-maven-plugin</artifactId> 
      <version>1.7.4</version> 
      <configuration> 
       <verbose>true</verbose> 
       <fork>true</fork> 
       <executable>${JAVA_HOME_1_7}/bin/javac</executable> 
       <compilerVersion>1.7</compilerVersion> 
      </configuration> 
     <executions> 
       <execution> 
        <id>crf</id> 
        <phase>package</phase> 
        <configuration> 
         <jsSourceDir>crf/js</jsSourceDir> 
         <jsSourceIncludes> 
          <jsSourceInclude>*.js</jsSourceInclude> 
         </jsSourceIncludes> 
         <jsTargetDir>crf/js</jsTargetDir> 
         <skipMerge>true</skipMerge> 
         <jsEngine>CLOSURE</jsEngine> 
         <nosuffix>true</nosuffix> 
         <closureCreateSourceMap>false</closureCreateSourceMap> 
        </configuration> 
        <goals> 
         <goal>minify</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>bundle-configuration-minify</id> 
        <configuration> 
         <jsEngine>CLOSURE</jsEngine> 
         <closureCreateSourceMap>false</closureCreateSourceMap> 
        </configuration> 
        <goals> 
         <goal>minify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

Когда я построить компонент (скажем, «компонент войны» с использованием mvn clean install), я вижу, что цель (компонентная война) имеет мини-код JavaScript. Но локальное репо Maven не содержит мини-файл. В связи с этим, когда я упаковываю проект (Say 'project-ear'), цель не содержит мини-файл.

Я также иметь следующую конфигурацию в моей POM -

<plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1.1</version> 
      <configuration> 
       <packagingIncludes>WEB-INF/lib/urlrewritefilter-*.jar,WEB-INF/lib/xercesImpl-*.jar,WEB-INF/lib/io-*.jar,WEB-INF/lib/xtags-*.jar,**/*.xml,**/*.xsd,**/*.pdf,**/*.txt,**/*px,**/*dummyfile,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,**/*.jsp,**/*.jspf,**/*.xsl,**/*.html,**/*.htm,**/*.vm,**/*.tld,**/*.gif,**/readme,**/*.zip,**/*.jpg,**/*.zul,**/*.zs,**/*.eot,**/*.svg,**/*.ttf,**/*.woff,**/*.swf 
       </packagingIncludes> 
       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <classpathPrefix>lib/</classpathPrefix> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
+0

Файл войны не содержит миниатюрный файл. –

+0

Вы имеете в виду ваш WAR-файл в целевой папке, содержащий мини-файл, и тот же файл, установленный в локальном репо, НЕ СОДЕРЖИТ? – michaldo

+0

Спасибо за ответ. WAR-файл не содержит мини-файл. –

ответ

0

Сначала вы должны удалить:

< исполнение>
< идентификатор> CRF </идентификатор>
< фаза> пакет </phase>

потому что для проекта WAR в фазе пакет maven-war-plugin имеет приоритет над другими плагинами (http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins) - WAR строит перед минимизацией.

BTW, это объясняет, почему Maven имеет фазу подготовки пакета и не имеет post-package; все, что определено в пакете, эффективно пост-пакет

Этого недостаточно, потому что maven-war-plugin перезапишет миниатюрные файлы. Вы должны настроить его игнорировать оригинальные JS-файлы, потому что их уменьшенная версии уже подготовлены Минимизировать плагин (Exclude source files from WAR package)

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1.1</version> 
    <configuration> 
     <packagingIncludes>WEB-INF/lib/urlrewritefilter-*.jar,WEB-INF/lib/xercesImpl-*.jar,WEB-INF/lib/io-*.jar,WEB-INF/lib/xtags-*.jar,**/*.xml,**/*.xsd,**/*.pdf,**/*.txt,**/*px,**/*dummyfile,**/*.properties,**/*.class,**/*.png,**/*.css,**/*.js,**/*.jsp,**/*.jspf,**/*.xsl,**/*.html,**/*.htm,**/*.vm,**/*.tld,**/*.gif,**/readme,**/*.zip,**/*.jpg,**/*.zul,**/*.zs,**/*.eot,**/*.svg,**/*.ttf,**/*.woff,**/*.swf 
     </packagingIncludes> 

<!--HERE **************** --> 
     <warSourceExcludes>crf/js/*.js</warSourceExcludes> 
<!--HERE **************** --> 

    <archive> 
     <manifest> 
      <addClasspath>true</addClasspath> 
      <classpathPrefix>lib/</classpathPrefix> 
     </manifest> 
     </archive> 
    </configuration> 
</plugin> 

Кстати, ваш специалист конфигурации войны плагин (packagingIncludes) предполагает, у вас есть беспорядок в проекте. Вы должны подумать о том, чтобы очистить его, потому что мое предложение расширяет конфигурацию и любое дополнительное ненужное расширение вызывает целую конфигурацию, которую трудно понять.

+0

Спасибо, что решил проблему для меня. Чтобы повторить, какие изменения я сделал: **/*. Js в maven-war-plugin и изменили jsEngine на 'yuicompressor-maven-plugin' и prepare-package