我有数百个JavaScript文件分布在不同的文件夹层级中,我希望得到两种输出。一种是为了调试目的而连接的版本,另一种是连接和缩小的版本。我目前正在使用以下插件,但在这个插件中,我需要提供每个需要缩小的文件。我正在寻找一个只需提供父文件夹并满足上述条件的插件。
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>1.7</version>
我有数百个JavaScript文件分布在不同的文件夹层级中,我希望得到两种输出。一种是为了调试目的而连接的版本,另一种是连接和缩小的版本。我目前正在使用以下插件,但在这个插件中,我需要提供每个需要缩小的文件。我正在寻找一个只需提供父文件夹并满足上述条件的插件。
<groupId>com.samaxes.maven</groupId>
<artifactId>minify-maven-plugin</artifactId>
<version>1.7</version>
YUI压缩Maven插件对我很有效。下面我将展示我所做的一切来使它起作用。
- 为了连接所有JavaScript文件,我使用了聚合。
元素细节如下:
- preProcessAggregates - 在缩小之前处理聚合。
- aggregations - 将多个目录层次结构中的资源聚合到单个文件中。
- aggregation - 可以在父聚合内有多个聚合元素。
- insertNewLine - 在文件eof后插入换行符,同时连接/聚合文件。
- inputDir - 文件将在其中搜索以进行连接/聚合的父目录。
- sourceDirectory - 文件将在其中搜索以进行缩小的目录。
- outputDirectory - 缩小后的输出将存放在其中的目录中。
- nosuffix - 如果设置为true,则插件将不会向缩小的文件添加“-min”。
有两种类型的<exclude>
属性:
- 第一种是聚合的一部分,基本上是从聚合中排除文件。
- 第二个是插件的一部分,用于排除要缩小的文件。
插件代码如下:
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<preProcessAggregates>true</preProcessAggregates>
<aggregations>
<aggregation>
<insertNewLine>true</insertNewLine>
<output>${basedir}/target/single.js</output>
<inputDir>${basedir}/src/main/resources/js</inputDir>
<includes>
<include>**/*.js</include>
</includes>
<excludes>
<exclude>**/*abc.js</exclude>
<exclude>**/compressed.css</exclude>
</excludes>
</aggregation>
</aggregations>
<excludes>
<exclude>**/*-min.js</exclude>
<exclude>**/*.min.js</exclude>
<exclude>**/*-min.css</exclude>
<exclude>**/*.min.css</exclude>
</excludes>
<jswarn>false</jswarn>
<nosuffix>false</nosuffix>
<sourceDirectory>${basedir}/target</sourceDirectory>
<outputDirectory>${basedir}/target</outputDirectory>
</configuration>
<executions>
<execution>
<id>compress_js_css</id>
<phase>process-resources</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
</plugin>