Maven plugin to compress (minify/obfuscate/aggregate) JavaScript and CSS files using YUI Compressor.
This project is a fork of net.alchim31.maven:yuicompressor-maven-plugin maintained by the CodeLibs Project for continued development and modern Maven support.
- JavaScript Compression: Minification and obfuscation using YUI Compressor
- CSS Compression: Minification of CSS files
- JSLint Integration: Validate JavaScript files during build
- File Aggregation: Concatenate multiple files before or after compression
- GZIP Support: Automatically create gzipped versions
- Incremental Builds: IDE integration with M2E incremental build support
- Selective Compression: Skip already-minified files
- Compression Statistics: Optional reporting of compression ratios
- Maven 3.8.8 or later
- Java 11 or later
Add the plugin to your pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.codelibs.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>2.0.0-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>| Parameter | Default | Description |
|---|---|---|
encoding |
UTF-8 | File encoding |
suffix |
-min | Output filename suffix |
nosuffix |
false | Skip suffix addition |
linebreakpos |
-1 | Line break position |
force |
false | Force recompression |
gzip |
false | Create gzipped versions |
statistics |
true | Show compression statistics |
| Parameter | Default | Description |
|---|---|---|
nocompress |
false | Skip compression (copy only) |
nomunge |
false | Minify only, no obfuscation |
preserveAllSemiColons |
false | Keep unnecessary semicolons |
disableOptimizations |
false | Disable micro optimizations |
jswarn |
true | Display JavaScript warnings |
<configuration>
<suffix>.compressed</suffix>
</configuration><configuration>
<gzip>true</gzip>
<level>9</level>
</configuration><configuration>
<aggregations>
<aggregation>
<output>${project.build.directory}/all.js</output>
<includes>
<include>file1.js</include>
<include>file2.js</include>
</includes>
<insertNewLine>true</insertNewLine>
</aggregation>
</aggregations>
</configuration><execution>
<goals>
<goal>jslint</goal>
</goals>
</execution>- JDK 11 or later
- Maven 3.8.8 or later
# Build the plugin
mvn clean install
# Run tests
mvn test
# Run integration tests
mvn verify
# Skip tests
mvn install -DskipTests
# Generate site documentation
mvn siteIf you're migrating from net.alchim31.maven:yuicompressor-maven-plugin, simply update your pom.xml:
<!-- Old -->
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.5.1</version>
<!-- New -->
<groupId>org.codelibs.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>2.0.0-SNAPSHOT</version>All configuration options remain compatible.
Found a bug or have a feature request? Please report it to the issue tracker.
Contributions are welcome! Please feel free to submit a Pull Request.
- David Bernard - Original author
- Piotr Kuczynski - Contributor
- Shinsuke Sugaya - Lead maintainer
This project is released into the public domain under The Unlicense.