Learn Apache Maven tutorial
The Apache Maven Java build tool stands entrenched as the preeminent project to use when you need to compile, test and package enterprise software.
This Apache Maven crash course covers everything a comprehensive Java build tool tutorial should cover, including:
- What is Apache Maven?
- How to install Apache Maven.
- Java project creation with archetypes.
- How to compile and test with Maven.
- How to manage Maven dependencies.
- Working with Maven plugins.
- POM file configuration.
- How to import Maven into Eclipse.
- Building Spring Boot apps with Maven.
- Creating executable JARs for DevOps deployment.
- Jenkins and Maven integration.
What is Apache Maven?
At its heart, Apache Maven is a Java build tool for programmers to compile, test and package the applications they build.
However, Maven provides many compelling features beyond the ability to package and compile code, such as the following:
- Solves the dependency management problem.
- Downloads third-party JAR files that some apps require.
- Provides an extensive, third-party plugin architecture.
- Enables switching between development profiles.
- Integrates with DevOps tools such as Jenkins and Docker.
How do you install Apache Maven?
Apache Maven is distributed as a ZIP file. Simply extract it to the file system of any modern operating system.
However, Maven does have one prerequisite: a fully configured JDK.
Apache Maven works with Java 8, which is now almost 10 years old, but a more modern JDK version is recommended.
How do Maven archetypes work?
While it’s most well known as a build tool, Apache Maven is also a configuration tool which can generate skeleton Java projects through the archetype:generate command.
Over 3000 Apache Maven templates exists to let developers create basic, working projects that implement components and features such as:
- Servlets and JSPs.
- JakartaEE functionality.
- Hibernate and JPA apps.
- Spring Boot APIs.
What is an Apache Maven phase?
To perform various build operations, Apache Maven provides a variety of phases that admins can invoke on a project through the mvn command.
Commonly used Apache Maven phases include:
- clean – deletes the target folder.
- compile – turns source files into class files.
- test – runs a project’s unit tests.
- package – creates an artifact such as a JAR, ZIP or WAR file.
- install – moves a created artifact into a Maven repository.
How does Maven manage dependencies?
At the root of every Maven project is a Project Object Model file named pom.xml. This file lists all of a project’s dependencies on third-party libraries or external JAR files.
You can also create complex dependencies if you set up one pom.xml file as parent to another pom.xml file. This is often done with frameworks including Spring Boot to reference a large number of projects.
How do Maven plugins work?
Apache Maven’s core functionality is the ability to build projects and manage dependencies.
However, Maven also provides an extensive and easy-to-use plugin framework that enables vendors, open-source projects and other third parties to create apps that integrate into the Maven build lifecycle.
Popular Maven plugins include the following:
- Codehaus as an executable JAR plugin.
- FindBugs for static code analysis.
- Maven WAR to generate executable WAR files.
- CheckStyle to enforce coding standards.
- Spring Boot to package apps as microservices.
How does Maven integrate with Eclipse?
Like most modern IDEs, Eclipse provides thorough support for Apache Maven.
Special context-menus exist in Eclipse to perform the following tasks:
- Create Maven projects from scratch.
- Import existing Maven projects into the IDE.
- Bring in Maven projects from Git or GitHub.
What’s the difference between Maven and Jenkins?
Apache Maven and Jenkins are not competing technologies, as some mistakenly think.
Jenkins is a continuous integration tool that automates pulling code from source code repositories (GitHub, GitLab, etc.) and subsequently compiling it. Jenkins automates the task of integrating code — but to compile code, Jenkins requires a build tool.
While Jenkins integrates with many alternate build tools such as Gradle and Ivy, Jenkins offers out-of-the-box Maven support.
Complete Apache Maven course
Knowledge of Apache Maven is essential for anyone who considers themselves a full-stack developer in the Java community.
This complete Apache Maven course will help developers of all experience levels get up to speed on the most important aspects of how to use Apache Maven in modern, DevOps driven, software development environments.