simpligility technologies inc. presents
Progressive Organization POM
The Progressive Organization POM is a pom project for Apache Maven. It implements a so called "Company" or "Organizational POM", by locking down the versions of Maven plugins and further configuration. This is an important best practice for any organization using Maven.
It is called "progressive" because we are trying to keep up to date with the latest releases of all the referenced plugins. This is done with the belief that each new release of a plugin brings more good features and bug fixes than bad ones. New versions are therefore an improvement worth adopting. This is done even if this early adoption ends up finding issues in the belief that finding issues early by adopting new versions soon gets them fixed earlier.
The pom is deployed to the Central Repository and can therefore be used by just adding the following snippet to your project pom.xml file.
<parent> <groupId>com.simpligility.maven</groupId> <artifactId>progressive-organization-pom</artifactId> <version>5.0.0</version> </parent>
Once you have done that, you can reference any plugin without a version and will inherit the latest version automatically from the Progressive Organization POM e.g. like that
<plugin> <groupId>com.simpligility.maven.plugins</groupId> <artifactId>android-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> </plugin>
If, for some reason (unlikely but possible), you can not adopt the latest version of a specific plugin, you can and should still use this project as a parent pom and just override the one plugin version that is the offender. If you encounter this situation be sure to report the issue with the respective plugin.
The same applies for any plugin configuration inherited from this pom.
Project Versioning and Updates
The first publicly announced release was 1.0.0. Following versions will always use semantic versioning. Whenever one of the referenced plugins upgrades a major version, this project will upgrade major version by one. The same process will be followed with minor as well as bugfix versions. We also aim for a regular release schedule aiming initially for at least every 3 months, ideally every month, as well as ad hoc releases whenever often used plugins provide important updates.
More details about changes between versions are available from the changelog
Apache License, Version 2.0
For full text see LICENSE.txt file or http://www.apache.org/licenses/LICENSE-2.0
are very welcome. Send a pull request or report issues on GitHub. Even just a suggestion of a useful plugin in an issue is a welcome help.
You can check for new plugins and versions with
mvn versions:display-plugin-updates mvn versions:display-property-updates
Deployment and release are done the usual Maven way..
mvn clean deploy
mvn release:prepare release:perform
This does the full release and deployment to the Central Repository.