Using Samaxes Minify nosuffix to overwrite original files

房东的猫 提交于 2021-02-10 18:24:47

问题


I'm using Samaxes minify maven plugin to minify js and css files. The plugin works fine in creating new files with a minifies js and css, but I'd like that the minified files will have the same name of the original files (overwriting them). So I've tried to add the nosuffix true in the pom.xml, as below:

<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>

This is the plugin configuration in the pom.xml, all the options there are working fine (it identifies the sources, skips the merging, etc) but the nosuffix set to true doesn't overwrite the original files. What I don't understand is that the plugin understands perfectly the source and the destination, it even logs that it saved some space, but the output is not minified:

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

What am I missing?


回答1:


Minify Maven Plugin runs during the Maven phase process-resources by default.
Since you are setting both the options nosuffix and skipMerge to true, which cause the output files to have the same path as the originals, it is causing the output files to be overridden by the source files during the phase package.

To fix this, change the plugin execution phase to 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>

And exclude your source files from the WAR package.



来源:https://stackoverflow.com/questions/22117824/using-samaxes-minify-nosuffix-to-overwrite-original-files

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!