Maven
Apache Maven is a general-purpose build system that does not rely on Makefiles to build software. It is designed for building and managing and Java-based project.
Phases
The MavenBuilder and MavenPackage base classes come with the following phases:
build- compile code and package into a JAR fileinstall- copy to installation prefix
By default, these phases run:
$ mvn package
$ install . <prefix>
Important files
Maven packages can be identified by the presence of a pom.xml file.
This file lists dependencies and other metadata about the project.
There may also be configuration files in the .mvn directory.
Build system dependencies
Maven requires the mvn executable to build the project. It also
requires Java at both build- and run-time. Because of this, the base
class automatically adds the following dependencies:
depends_on("java", type=("build", "run"))
depends_on("maven", type="build")
In the pom.xml file, you may see sections like:
<requireJavaVersion>
<version>[1.7,)</version>
</requireJavaVersion>
<requireMavenVersion>
<version>[3.5.4,)</version>
</requireMavenVersion>
This specifies the versions of Java and Maven that are required to build the package. See https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN402 for a description of this version range syntax. In this case, you should add:
depends_on("java@7:", type="build")
depends_on("maven@3.5.4:", type="build")
Passing arguments to the build phase
The default build and install phases should be sufficient to install most packages. However, you may want to pass additional flags to the build phase. For example:
def build_args(self):
return [
"-Pdist,native",
"-Dtar",
"-Dmaven.javadoc.skip=true"
]
External documentation
For more information on the Maven build system, see: https://maven.apache.org/index.html