简体   繁体   English

使用 Maven 缩小 CSS

[英]Minifying CSS using Maven

I have a Maven profile for which I want to minify all my javascript and css files.我有一个 Maven 配置文件,我想缩小我所有的 javascript 和 css 文件。 For developing I have compressed.js and compressed.css files which are simply injecting other scripts/stylesheets.对于开发,我有compressed.jscompressed.css文件,它们只是注入其他脚本/样式表。 What do I want is to override those files with actually compressed ones but only .js minification works for me.我想要的是用实际压缩的文件覆盖这些文件,但只有 .js 缩小对我有用。

Here's part of my profile:这是我的个人资料的一部分:

<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>
        <linebreakpos>999999</linebreakpos>
        <jswarn>false</jswarn>
        <excludes>
            <exclude>**/compressed.js</exclude>
        </excludes>
        <aggregations>
            <aggregation>
                <removeIncluded>true</removeIncluded>
                <insertNewLine>false</insertNewLine>
                <output>${project.build.directory}/${project.build.finalName}/js/compressed.js
                </output>
                <includes>
                    <include>**/components/sample-min.js</include>
                    <include>**/components/sample2-min.js</include>
                </includes>
                <excludes>
                    <exclude>**/compressed.js</exclude>
                </excludes>
            </aggregation>
        </aggregations>
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <excludes>js/**</excludes>
    </configuration>
</plugin>

When I modify the following lines, it simply doesn't work when there's already compressed.css present, when not, it minifies okay.当我修改以下几行时,当已经存在compressed.css时它根本不起作用,如果没有,它会缩小。

Add to yuicompressor-maven-plugin :添加到yuicompressor-maven-plugin

<exclude>**/compressed.css</exclude>
...
<aggregations>
    <aggregation>
        <removeIncluded>true</removeIncluded>
        <insertNewLine>false</insertNewLine>
        <output>${project.build.directory}/${project.build.finalName}/css/compressed.css
        </output>
        <includes>
            <include>**/sample-min.css</include>
            <include>**/sample2-min.css</include>
        </includes>
        <excludes>
            <exclude>**/compressed.css</exclude>
        </excludes>
    </aggregation>

Change in maven-war-plugin : maven-war-plugin

<excludes>
    <exclude>js/**</exclude>
    <exclude>css/**</exclude>
</excludes>

Please, what am I doing wrong?请问,我做错了什么?

Yui compressor is very old for compressing .js files. Yui 压缩器用于压缩 .js 文件非常古老。 I used yui compressor for .css and google closure compiler for .js files.我对 .css 使用了 yui 压缩器,对 .js 文件使用了 google 闭包编译器。 Codes are shown below.代码如下所示。 They minifies all your .css and .js files and overwrites them at build phase of your project.它们会缩小您所有的 .css 和 .js 文件,并在项目的构建阶段覆盖它们。

    <!-- css compression -->
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.5.1</version>
            <executions>
                <execution>
                    <configuration>
                        <webappDirectory>${project.build.sourceDirectory}\src\main\resources\public\assets</webappDirectory>
                        <nosuffix>true</nosuffix>
                        <force>true</force>
                        <jswarn>false</jswarn>
                        <excludes>
                            <exclude>**/*.min.js</exclude>
                            <exclude>**/*-min.js</exclude>
                            <exclude>**/*.js</exclude>
                        </excludes>
                    </configuration>
                    <goals>
                        <goal>compress</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

    <!--JavaScript Compression Part-->
        <plugin>
            <groupId>com.github.blutorange</groupId>
            <artifactId>closure-compiler-maven-plugin</artifactId>
            <version>2.16.0</version>
            <configuration>
                <baseSourceDir>${project.basedir}\src\main\resources\public\assets</baseSourceDir>
                <baseTargetDir>${project.build.directory}\classes\public\assets</baseTargetDir>
            </configuration>
            <executions>
                <execution>
                    <id>default-minify</id>
                    <configuration>
                        <encoding>UTF-8</encoding>
                        <sourceDir></sourceDir>
                        <outputFilename>#{path}/#{basename}.#{extension}</outputFilename>
                        <targetDir></targetDir>
                        <includes>**/*.js</includes>
                        <excludes>
                            <exclude>**/*.min.js</exclude>
                        </excludes>
                        <skipMerge>true</skipMerge>
                        <closureLanguageOut>ECMASCRIPT5</closureLanguageOut>
                    </configuration>
                    <goals>
                        <goal>minify</goal>
                    </goals>
                    <phase>generate-resources</phase>
                </execution>
            </executions>
        </plugin>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM