缩小 maven 插件,不将缩小文件添加到 maven 本地存储库

Minify maven plugin,does not add minified file to maven local repository

我在 POM 中使用具有以下配置的 minify 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>

当我构建组件时(比如 'component-war' 使用 mvn clean install),我看到目标(组件-war)有一个缩小的 JavaScript.But Maven 本地仓库不包含缩小文件。 因此,当我打包项目时(比如 '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>

首先你必须删除:

<执行>
crf
<阶段>包

因为 WAR 阶段的项目 package maven-war-plugin 优先于其他插件 (http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins) - WAR 是在缩小之前构建的。

顺便说一句,它解释了为什么 Maven 有 phase prepare-package 而没有 post-package;包中定义的所有内容实际上都是 post-package

这还不够,因为 maven-war-plugin 会覆盖缩小的文件。您必须将其配置为忽略原始 JS 文件,因为它们的缩小版本已经由 minify 插件准备好了(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>

顺便说一句,您的 Maven war 插件配置 (packagingIncludes) 表明您的项目一团糟。你应该考虑清理它,因为我的建议扩展配置和任何进一步不必要的扩展导致整个配置难以理解