Maven UberDist Plugin

Plugin Overview and Documentation map

Why another distribution plugin?

Some software systems are made of many artifacts and may require an aggregation of many

"external" components or third parties to have a complete distribution.

In a production environment, deployment rules may be very strict and software teams may have

to follow prescribe procedures on how and where their system should be installed, especially

on Unix environments where proper file rights attribution are crucial.

The one fits all rule doesn't apply here and building the distribution becomes an complex task in itself.

The goal of the UberDist plugin is to integrate the basic mechanism of having a custom goal called to

build this project specific complex distribution. In other words, use the full power of maven to build your distribution

using a project specific goal you write. But, it also automates some recurring tasks and most of all leverages

the enormous amout of available facilities provided by the Maven build environment to give better control

on the deployment file structure.

Goals Document listing all callable and internal goals of the UberDist maven plugin.
Tags The UberDist plugin defines Jelly tags to perform some basic operations. These tags are listed and explained in this document.
Properties The behavior of the Maven UberDist Plugin can be altered as many plugins via several properties. This document describes each property available, and the default values used if none are supplied in the project.
FAQs Question and answers to get you up and running in no time!

UberDist Process

UberDist with results of maven a project compilation but not in the location they are generated at.

The plugin uses 2 directories that are defined by properties:

When one of the distribution building goal is called (either one of uber-dist:make, build or prepare-dist-filesystem), the plugin will call its internal init goal ( uber-dist:init ), this is when you register your project with a postGoal. See uber-dist:registerProject tag

See also FAQ: register-project

Once your project is registered, UberDist prepares the necessary directories, based on its property values.

Now comes the time to copy all necessary files in the distribution assembly. UberDist will first call YOUR distribution goal.

Ex.: For a a maven project with id: myproject, the goal myproject:prepare-dist-filesystem will be called.

Then, the plugin will call a list of internal goals designed to help you building your distribution with minimum jelly code added in your project.

  1. uber-dist:copy-deps : to copy project dependencies like artifact does but with a little more control
  2. uber-dist:copy-scripts : to copy launch scripts (batch file, bash,etc) with filtering
  3. uber-dist:make-executable : For Unix platforms, to make some files executable
And final step, creating the tarball (Unix) or the zip file (Windows).

For more details, please see the Goals, Properties and FAQ pages.

Happy Distributing!