使用Samaxes Minify nosuffix覆盖原始文件

时间:2014-03-01 17:35:39

标签: maven minify overwrite

我正在使用Samaxes minify maven插件来缩小js和css文件。 该插件在创建新文件时可以正常工作,同时缩小了js和css,但我希望缩小的文件与原始文件的名称相同(覆盖它们)。 所以我试图在pom.xml中添加nosuffix,如下所示:

<plugin>
        <groupId>com.samaxes.maven</groupId>
        <artifactId>minify-maven-plugin</artifactId>
        <version>1.7.2</version>
        <executions>
            <execution>
                <id>default-minify</id>
                <configuration>
                    <charset>UTF-8</charset>
                    <closureCompilationLevel>WHITESPACE_ONLY</closureCompilationLevel>
                    <nosuffix>true</nosuffix>
                    <skipMerge>true</skipMerge>
                    <verbose>true</verbose>
                    <yuiPreserveAllSemiColons>true</yuiPreserveAllSemiColons>
                    <webappSourceDir>${basedir}/WebContent</webappSourceDir>

                    <cssSourceDir>css</cssSourceDir>
                    <cssSourceIncludes>
                        <cssSourceInclude>**/*.css</cssSourceInclude>
                    </cssSourceIncludes>
                    <cssSourceExcludes>
                        <cssSourceExclude>**/*.min.css</cssSourceExclude>
                    </cssSourceExcludes>
                    <jsSourceDir>scripts</jsSourceDir>
                    <jsSourceIncludes>
                        <jsSourceInclude>**/*.js</jsSourceInclude>
                    </jsSourceIncludes>
                    <jsSourceExcludes>
                        <jsSourceExclude>**/*.min.js</jsSourceExclude>
                    </jsSourceExcludes>

                </configuration>
                <goals>
                    <goal>minify</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

这是pom.xml中的插件配置,所有选项都工作正常(它标识源,跳过合并等)但是nosuffix设置为true不会覆盖原始文件。 我不明白的是插件完全理解源和目的地,甚至记录它节省了一些空间,但输出没有缩小:

[INFO] Creating the minified file [/mydir/css/styles.css].
[INFO] Uncompressed size: 32490 bytes.
[INFO] Compressed size: 24188 bytes minified (5833 bytes gzipped).

我错过了什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,

Minify Maven Plugin在Maven阶段process-resources期间运行 由于您要将nosuffixskipMerge选项设置为true,这会导致输出文件与原始文件具有相同的路径,因此会导致输出文件被覆盖阶段package期间的源文件。

要解决此问题,请将插件执行阶段更改为package

<plugin>
    <groupId>com.samaxes.maven</groupId>
    <artifactId>minify-maven-plugin</artifactId>
    <version>1.7.2</version>
    <executions>
        <execution>
            <id>default-minify</id>
            <phase>package</phase>
            <configuration>
                <!-- ... -->
            </configuration>
            <goals>
                <goal>minify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

exclude your source files from the WAR package