What is it?
The Jade Plugins project is a list of Jar modules, Plexus Components and Maven2 plugins, that are using Java5 goodies like annotations and generics.
Using Annotated Plug-in Mojos from Maven Anno Mojo, jade plugins can inherit and delegate to each others, without copy/pasting parameters and code.
Having Annotations completion, documentation and inheritance while developing Maven2 plugins proved to be very helpful. This way it is possible to extends any Maven2 jade plugins just by Java inheritance, and use all OO design while writing plexus components and plugins.
Real Life Example
Here is how we use jade-plugins in big projects.
Jade Plugins contains some new plugins and some migration from maven plugins and codehaus mojo project.
The project is under Apache v2 License.
The list of features is here.
The first usage of Maven Anno Mojo was for the Multijar, which allow the creation of multiple artifacts (jar, zip, tar) for one pom file and reload them on dependencies.
The javac plugin came from the need to avoid the plexus scanner and activate directly the javac task of Ant.
This plugins allows smooth migration to maven by allowing circular dependencies in your modules. You can specify some extra sourcepath directory for the javac compilation, and the plugin will display a warning that you are using a "no-good-design" feature. It allows also to compile with different JDK version installed.
The Assembly Plugin aggregate the information acquired in the Multijar to create installation packages like install shield, RPM, tar or zip, out of the Maven2 dependency graph.
This plugin invert the responsability of packing information. Each module provide the list of artifacts with a deployment type and name and so the packaging module does not need to know all the dependendant modules and their type.
For example this plugin allows configuration like:
- All server jar goes to WEB-INF/lib
- All client jar goes to client/lib
- All SQL scripts goes to SQL
The TestNG Plugin is a wrapper of the TestNG Ant task, and allow the usage of TestNG 5.5 and all its possible configurations.
One of the most important work in jade-plugins is the migration of codehaus Dan T. Tran native plugin to maven anno mojo. The Jade Native Plugin added a lot of features like transitive dependencies, include files distribution, Unit Tests, static analysis, and parallel compilations.
Jade plugins migration of maven idea plugin to maven anno mojo. The Jade Idea Plugin added a some features like dynamic template location, group hierarchy based on groupId, and project renaming.
Now that Maven Plugin can use OO, we find a lot of Copy/Paste code that can be aggregated in common jars. This common code contains features like:
- Maven to Ant Integration
- Project renaming (used in multijar, assembly, idea, native, ...)
- Deployment type manager
- MOJO to POJO delegation
How to use
For just using jade-plugins as they are, please refer to Settings. If you want to create your own annotated Maven2 plugin (recommended) and extends jade-plugins refer to Usage.