1

我试图找到js/cssmaven 项目的压缩工具,所以我找到了这个线程 - Maven Javascript Compressor

一切正常,但我仍在努力解决一个问题。

当您不设置后缀 yui 时,它*-min默认设置并在旧文件的旁边创建一个新文件。因此,例如,如果我scripts.js在使用该插件构建 maven 之后,我将同时拥有scripts.jsscripts-min.js文件。我只需要*-min文件。如果我将其设置<nosuffix>为 true,则表示压缩成功,但不会覆盖文件。

有没有办法我只能拥有同名的压缩文件?

4

2 回答 2

0

最终为 maven ant 插件编写了这个 ant 脚本:

<delete includeEmptyDirs="false">
    <fileset dir="${basedir}/target/${project.build.finalName}/resources/js" excludes="**/*-min.js" />          
</delete>
<move todir="${basedir}/target/${project.build.finalName}/resources/js" includeemptydirs="false">
    <fileset dir="${basedir}/target/${project.build.finalName}/resources/js" />
    <mapper type="glob" from="*-min.js" to="*.js" />
</move>

<delete includeEmptyDirs="false">
<fileset dir="${basedir}/target/${project.build.finalName}/resources/css"
    excludes="**/*-min.css, **/*.ttf, **/*.png, **/*.jpg" />
</delete>
<move todir="${basedir}/target/${project.build.finalName}/resources/css" includeemptydirs="false">
    <fileset dir="${basedir}/target/${project.build.finalName}/resources/css" />
    <mapper type="glob" from="*-min.css" to="*.css" />
</move>

简要说明:脚本首先删除旧的未压缩文件,然后将*-min.jsand*-min.css文件重命名为简单*.js*.css

工作正常,刚刚测试。此外,如果您在/jsor/css文件夹中有一些不同的文件(不是.jsor .css),请确保您没有删除它们并将这些扩展名放在exclude属性中。

于 2013-03-07T15:58:10.283 回答
0

是的,您使用的 maven Javascript Compressor 确实压缩了文件。但是在maven 包生命周期中,压缩发生在准备包阶段,之后,在包阶段,maven-war-plugin 将复制原始文件并覆盖压缩器刚刚所做的。下面的配置是我解决问题的方法,我将js文件压缩到另一个文件夹,并在打包阶段将其复制回来。

    <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.5.1</version>
            <executions>
                <execution>
                <id>yui-compress</id>
                <phase>prepare-package</phase>
                    <goals>
                        <goal>compress</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <exclude>**/*-min.js</exclude>
                    <exclude>**/*.min.js</exclude>
                    <exclude>**/*-min.css</exclude>
                    <exclude>**/*.min.css</exclude>
                    <exclude>**/amazeui*</exclude>
                    <exclude>**/*.css</exclude>
                </excludes>
                <encoding>UTF-8</encoding>
                <nosuffix>true</nosuffix>
                <statistics>false</statistics>
                <linebreakpos>5000</linebreakpos>
                <useSmallestFile>true</useSmallestFile>
                <jswarn>false</jswarn>
                <warSourceDirectory>${basedir}/web</warSourceDirectory>
                <webappDirectory>${project.build.directory}/min</webappDirectory>
                <skip>false</skip>
            </configuration>
        </plugin> 
         <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webResources>
                    <resource>
                        <directory>${project.build.directory}/min</directory>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
于 2017-09-09T07:42:30.313 回答