During development we are using javascript and CSS files that are not minified. But they have to be minified (with yuicompressor) when the production war is built. So, I want to replace the original javascript and CSS files with the minified ones. The project structure looks as follows (nothing special):
+ webapp
|-- js
|-- css
...
What I want to do is: before the WAR is created by Gradle, I want to minify the above mentioned files with yuicompressor and want them to be packed in the WAR.
What I did so far is to run a task before the WAR is created, which minifies the files:
war {
it.dependsOn minifyJavaScript
}
The task minifyJavaScript takes all files in the webapp/js folder, minifies them and store them in the ${buildDir}/js directory. The only thing I couldn’t get to work is that these files are packed into the WAR. I tried to adjust the sourceSets, but I got an error from Gradle:
apply plugin: 'java'
...
sourceSets {
main {
webapp {
srcDir "${buildDir}/js"
}
}
}
Error: unsupported Gradle DSL method found: ‘sourceSets()’
I also tried to include the files with with:
war {
it.dependsOn minifyJavaScript
include ${buildDir}/js
}
The problem with this solution is that the WAR contains only the minified files.
So, is there a way to tell Gradle to add the ${buildDir}/js path during WAR creation? Or is there a better / simpler way to include the minified files?