Skip to content

Latest commit

 

History

History
124 lines (89 loc) · 4.15 KB

README.asciidoc

File metadata and controls

124 lines (89 loc) · 4.15 KB

simpligility technologies inc. presents

Progressive Organization POM

Introduction

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.

Usage

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>8.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

License

Apache License, Version 2.0

For full text see LICENSE.txt file or http://www.apache.org/licenses/LICENSE-2.0

Contributions

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.

Development

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

and

mvn release:prepare release:perform

This does the full release and deployment to the Central Repository.

Contributors

Known users of this project

This is appropriately licensed to be easily used by commercial and open source projects alike. Please let us know if you are using this project and are happy to be listed here.