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. It is the forge environment for all JFrog plugins like JavaFX Maven Plugin and Jade Native Plugin.

Benefits

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.

Features

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.

New Plugins

Multijar

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.

Javac

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.

Assembly

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:

  1. All server jar goes to WEB-INF/lib
  2. All client jar goes to client/lib
  3. All SQL scripts goes to SQL

TestNG

The TestNG Plugin is a wrapper of the TestNG Ant task, and allow the usage of TestNG 5.5 and all its possible configurations.

Plugins Migrated

Native

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.

Idea

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.

Core Jars

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:

  1. Maven to Ant Integration
  2. Project renaming (used in multijar, assembly, idea, native, ...)
  3. Deployment type manager
  4. 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.