【问题标题】:Usage of YUI Compressor Maven Mojo minifying javascriptYUI Compressor Maven Mojo 缩小 javascript 的使用
【发布时间】:2012-08-03 21:57:43
【问题描述】:

我在一个使用 maven 编译的 struts2 项目上工作。我正在尝试缩小位于不同位置的 javascript 文件。

<plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <version>1.3.0</version>
    <executions>
      <execution>
        <goals>
          <goal>compress</goal>
        </goals>
      </execution>
    </executions>        
    <configuration>
      <nosuffix>true</nosuffix>
    </configuration>
  </plugin>

我假设通过这样做,所有的js文件都会被缩小并替换生产war文件中的原始文件(根据nosuffix的定义)。

但似乎并非如此。我怎样才能做到这一点?

其次,如果我选择使用带后缀的那个,我假设我必须手动更改我的 jsp 文件中的脚本引用,对吗?如果是这样,我该如何设置它以删除没有后缀的原始文件?

谢谢。

【问题讨论】:

    标签: javascript jsp maven package minify


    【解决方案1】:

    我找到了有效的解决方案here。基本上,您需要将以下内容放入 pom.xml 中(仅替换 src/main/webapp 文件夹中的 js 和 css 文件的路径):

        <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <!-- Add minified resources -->
                        <resource>
                            <directory>${project.build.directory}/minimized</directory>
                            <targetPath>/</targetPath>
                            <filtering>false</filtering>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
    
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>yuicompressor-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>compress</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <nosuffix>true</nosuffix>
                </configuration>
            </plugin>
        </plugins>
    
        <pluginManagement>
            <plugins>
                <!-- Javascript and CSS files compression -->
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>yuicompressor-maven-plugin</artifactId>
                    <version>1.1</version>
                    <configuration>
                        <!-- Don't output in the default webapp location, since the war plugin will overwrite the files in there
                        with the original, uncompressed ones. -->
                        <webappDirectory>${project.build.directory}/minimized</webappDirectory>
                        <jswarn>false</jswarn>
                        <!-- Overwrite existing files -->
                        <nosuffix>true</nosuffix>
                        <includes>
                            <include>%path to your js and css files inside src/main/webapp%/**/*</include>
                        </includes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        </build>
    

    【讨论】:

    • +1 链接,但你唯一忘记在这里包含的是: ${project.build.directory}/minimized 在 yiucompressor 的配置块中
    • 你的建议实际上是行不通的——它会错过所有来自 src/main/webapp 的静态资源、模板和 web.xml
    • 嗨,@IvanSopov 这个插件将压缩 src/main/webapp 下的所有 .js 和 .css 文件。但就我而言,我的 .js 和 .css 文件位于 src/main/resources/static 下,那么如何将默认路径更改为此?提前致谢。
    • 嗨,@davs 这个插件将压缩 src/main/webapp 下的所有 .js 和 .css 文件。但就我而言,我的 .js 和 .css 文件位于 src/main/resources/static 下,那么如何将默认路径更改为此?提前致谢。
    • 这种情况可能有解决办法,但是插件版本1.5.1有一个bug,因为一些简单的情况无法配置。假设我们要配置 webappDirectory 和 sourceDirectory。如果 sourceDirectory 的配置与默认值不同,则插件使用配置的值执行压缩两次,然后使用默认值执行压缩,这违背了 sourceDirectory 配置的目的。我无法从必须在压缩前进行更改的目录进行压缩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多