java - 如何使用 yuicompressor-maven-plugin 让 maven 使用缩小文件构建 war

标签 java maven minify

所以我正在尝试一些我认为相当简单的事情,我基本上希望 Maven 在构建 war 之前为我缩小所有的 js 和 css 文件。我的插件看起来像这样:

         <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
            <version>1.0.0</version>
            <configuration>
                <manifestLocation>META-INF</manifestLocation>
                <instructions>
                    <Export-Package>!test.impl,test*</Export-Package>
                    <Import-Package>*</Import-Package>
                    <!--
                       add ,plugin.xml if it's present i.e.
                       src/main/resources,plugin.xml
                    -->
                    <Include-Resource>src/main/resources</Include-Resource>
                </instructions>
            </configuration>
        </plugin>

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

问题是 YUI 插件确实正确地缩小了文件,但就在 war 构建之前,它看起来像是从我的主源目录复制了所有文件,从而消除了 YUI 插件所做的更改。

我通过以下方式调用 maven:mvn compile war:war。我已经尝试了一段时间不同的设置,但到目前为止我还没有找到解决这个问题的方法。

我想要的是在 war 从 src 目录复制它需要的文件后它会运行 YUI 插件,但我尝试了 YUI 插件上的所有阶段排列,但似乎没有有所作为。

我用谷歌搜索了一下,但到目前为止我读到的几乎所有内容似乎都表明我应该只需要像我一样将 YUI 插件放在那里,一切都应该神奇地工作。到目前为止,我似乎还没有发现魔法。

最佳答案

已接受的答案无效。

这个答案要好得多(正如 koga 在他的评论中指出的那样): https://stackoverflow.com/a/11495021/11451

这是我最后做的:

第 1 步:缩小 css 和 js

<plugin>
    <groupId>com.samaxes.maven</groupId>
    <artifactId>minify-maven-plugin</artifactId>
    <version>1.7.2</version>
    <executions>
        <execution>
            <phase>prepare-package</phase>
            <goals>
                <goal>minify</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <charset>UTF-8</charset>
        <skipMerge>true</skipMerge>
        <cssSourceDir>resources</cssSourceDir>
        <jsSourceDir>resources</jsSourceDir>
        <jsEngine>CLOSURE</jsEngine>
        <nosuffix>true</nosuffix>
        <webappTargetDir>${project.build.directory}/minify</webappTargetDir>
        <cssSourceIncludes>
            <cssSourceInclude>**/*.css</cssSourceInclude>
        </cssSourceIncludes>
        <cssSourceExcludes>
            <cssSourceExclude>**/*.min.css</cssSourceExclude>
        </cssSourceExcludes>
        <jsSourceIncludes>
            <jsSourceInclude>**/*.js</jsSourceInclude>
        </jsSourceIncludes>
        <jsSourceExcludes>
            <jsSourceExclude>**/*.min.js</jsSourceExclude>
        </jsSourceExcludes>
    </configuration>
</plugin>

第二步:用缩小文件覆盖war中的css和js

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <webResources>
            <resource>
                <directory>${project.build.directory}/minify</directory>
            </resource>
        </webResources>
    </configuration>
</plugin>

关于java - 如何使用 yuicompressor-maven-plugin 让 maven 使用缩小文件构建 war ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823752/

相关文章:

android - 如何下载带有所有依赖项的 Artifact ?

maven - mvn -e 完整的堆栈跟踪?

javascript - 需要使用 UglifyJsPlugin webpack 禁用 CSS 而不是 JS 的缩小

java - 扩展接口(interface)来更改合约,但不更改 API

java - 卡在两个 Activity 之间滑动

maven - 如何将 Maven 项目配置为不期望 Eclipse 中的资源目录

javascript - 有什么压缩 JS 文件的高级工具吗?

java - 线性布局层次结构和对齐问题

java - Bean 属性 'sessionFactory' 不可写或具有无效的设置方法

extjs - 使用 UglifyJS 缩小 ExtJS 应用程序?