【问题标题】:minify-maven-plugin (com.samaxes.maven v1.7.6) is not replacing the minified files with the original filesminify-maven-plugin (com.samaxes.maven v1.7.6) 没有用原始文件替换缩小文件
【发布时间】:2021-02-01 11:36:43
【问题描述】:

我想在 maven 项目中缩小 JS 和 CSS 文件。我使用了 minify-maven-plugin (com.samaxes.maven v1.7.6)。根据文档 (https://samaxes.github.io/minify-maven-plugin/minify-mojo.html),我已将 nosuffix> 和 skipMerge> 设置为 true 因为我想维护文件结构并用原始文件替换缩小的文件。我还设置了 phase>packagephase>。 生成和部署 WAR 文件后,JS 和 CSS 文件并没有缩小,它们和以前一样。 我还参考了一些 stackoverflow 答案,并根据https://stackoverflow.com/questions/22117824/using-samaxes-minify-nosuffix-to-overwrite-original-files 提供的建议设置了 warSourceExcludes> 选项 使用 warSourceExcludes> 选项后,当我在服务器上部署 WAR 文件时,JS 和 CSS 文件不可用,并且应用程序显示相同的 404 错误。请参考我的 pom.xml 配置:

        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.1</version>
            <configuration>
                <warSourceDirectory>WebContent</warSourceDirectory>
                <warSourceExcludes>**/*.css,**/*.js</warSourceExcludes>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.samaxes.maven</groupId>
            <artifactId>minify-maven-plugin</artifactId>
            <version>1.7.6</version>
            <executions>
                <execution>
                    <id>default-minify</id>
                    <phase>package</phase>
                    <configuration>
                        <charset>UTF-8</charset>
                        <webappSourceDir>${project.basedir}/WebContent</webappSourceDir>

                        <cssSourceDir>./</cssSourceDir>
                        <cssSourceIncludes>
                            <cssSourceInclude>**/*.css</cssSourceInclude>
                        </cssSourceIncludes>
                        <cssSourceExcludes>
                            <cssSourceExclude>**/*.min.css</cssSourceExclude>
                        </cssSourceExcludes>

                        <jsSourceDir>./</jsSourceDir>
                        <jsSourceIncludes>
                            <jsSourceInclude>**/*.js</jsSourceInclude>
                        </jsSourceIncludes>
                        <jsSourceExcludes>
                            <jsSourceExclude>**/*.min.js</jsSourceExclude>
                        </jsSourceExcludes>

                        <jsEngine>CLOSURE</jsEngine>
                        <nosuffix>true</nosuffix>
                        <skipMerge>true</skipMerge>
                    </configuration>
                    <goals>
                        <goal>minify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

请提出适当的解决方案。提前致谢!

【问题讨论】:

    标签: maven maven-plugin minify maven-war-plugin


    【解决方案1】:

    @Kristof Neirynck 对问题How to get maven to build a war with minified files using yuicompressor-maven-plugin 给出的答案适用于上述问题。 我将 phase> 属性更改为 prepare-package 并添加了

    <webappTargetDir>${project.build.directory}/minify</webappTargetDir> 
    

    在 webappSourceDir> 之后的 minify-maven-pluginma​​ven-war-plugin 中我设置了以下配置:

            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <warSourceDirectory>WebContent</warSourceDirectory>
                    <webResources>
                        <resource>
                            <directory>${project.build.directory}/minify</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
    

    使用此配置后,当我在 Tomcat 中部署 WAR 文件时,会将原始文件替换为缩小后的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多