Maven is one of the most widely used build systems for Java applications, and standardises on a Maven repository and the concept of Maven dependencies which has largely allowed Java’s ecosystem to grow in a modular fashion. Almost all Java libraries, whether built by Maven or not, are uploaded to the Maven central repository, which means that Java developers only need code a dependency in the Maven manifest file (called
pom.xml) and have the dependency automatically downloaded and made available on the classpath. In addition, Maven has one of the oldest concepts of a plugin system which allows dynamically downloadable modules to be inserted into a running build process.
There has already been some support for Maven and OSGi working together; Maven Tycho allows OSGi apps to be built, as well as M2Eclipse, which provides a
pom.xml supported development environment for Maven builds. Recently, Pax Construct has been added to the mix which allows simple OSGi applications to be defined in a nested project layout which is so familiar to users of Maven-based projects.
What does the future hold for the de-facto standard modular build system joining the de-facto standard for runtime modular applications hold? It’s going to be interesting to find out…