Skinny WAR done right
In a previous post, I wrote about how to create skinny WAR with Maven the DRY way: it was not the DRYier way to do it, as was demonstrated to me this week by my colleague Olivier Chapiteau (credit where credit is due).
His solution is far more elegant; it is reproduced below for reference’s sake.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<dependencies>
<dependency>
<groupId>ch.frankel.blog.ear-war</groupId>
<artifactId>war-example</artifactId>
<version>1.0.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>ch.frankel.blog.ear-war</groupId>
<artifactId>war-example</artifactId>
<type>pom</type> <!-- Here works the magic -->
<version>1.0.0</version>
</dependency>
</dependencies>
...
</project>
That’s it! The beauty lies in using the WAR’s POM as a dependency as well as the WAR itself: it’s simple, DRY and effective.

Brilliant trick! Did you encounter any (bad) side effects?
Well, the trick is not mine. As for side-effects, it just works!
@Marcel Ammerlaan
Here’s one negative side effect: Any dependency having ‘provided’ scope is included in the ear’s /lib directory. Other than that, this is brilliant.