The word “maven” means “accumulator of knowledge” in the Yiddish language. The Apache Software Foundation developed Maven and first released it on 13 July 2004. Apache Maven is a build automation tool that supports Java projects.
In this Article, we will be answering questions starting from Maven meaning how to become a professional! This blog focuses on What is Maven—its uses and architecture.
What is Maven - Table of Content
So, let us begin with the Maven definition first, which I am going to talk about in the section below.
What is Apache Maven?
Maven is a widely popular project management tool based on the POM (project object model). Java developers extensively use it to manage their day to day tasks easily.
Maven is written in Java, and it manages projects written in various languages such as C#, Scala, Ruby, and more. Developers use Maven to build projects using the Project Object Model and other useful plugins.
The three key features of Maven include building, dependency, and documentation.
If you would like to Enrich your career with a Maven certified professional, then visit Mindmajix - A Global online training platform: “Maven Online Training” Course. This course will help you to achieve excellence in this domain. |
Uses of Maven
There are several uses of Maven, such as:
- Maven helps in easy project building.
- It provides information regarding the project, such as unit test reports, log documents, dependency lists, etc.
- You can build multiple projects without doing any scripting in Maven.
- You can use Maven to add JARs and dependencies of the project quickly.
- With Maven, it is easy to update the central repository of JARs and other dependencies.
- Maven offers easy project integration with the source control system like Git or Subversion.
Benefits of Maven in the Project Development Process
With the help of Maven, developers can easily create projects based on Java. They can also easily add any new features to projects in the Maven configuration. Therefore, it enhances the efficiency of the building process and the project overall. The most crucial element of Maven is that it downloads project dependency libraries automatically. It manages operations like releases, distribution, and mailing lists.
Examples of IDEs (Integrated Development Environment) that support Maven development include MyEclipse, NetBeans, JBuilder, etc.
Basic concepts of Maven
There are five fundamental concepts in Maven.
- Project Object Model (POM) Files: These files are XML files with information regarding the project and configuration, such as the source directory, plugin, dependencies, etc. A POM file is given to Maven to execute a command. Then, it reads the pom.xml file to configure the Maven in Java.
- Build Life Cycle: The build life cycle includes phases, further divided into a sequence of goals. When you execute a lifecycle, it also applies to all the build phases in the life cycle. Similarly, if you run a build phase, all the previous stages in the sequence are also executed.
- Build plugins: If you want to achieve a specific goal, you can add a plugin to the POM file. There are standard plugins available in Maven, but you also implement some of your own in Java.
- Repositories and Dependencies: While repositories are directories of packages JAR files, dependencies are external Java files.
- Build Profiles: They consist of a set of configuration values used to build a project using different configurations.
Build Lifecycle Phases
Every build lifecycle has different phases, wherein each build phase represents a stage in the life cycle.
The default build lifecycle includes the following phases:
- validate: This phase validates the accuracy of the project and that all the required information is available.
- Compile: This phase compiles the project’s source code.
- Test: This phase tests the compiled source code with the help of a unit testing framework.
- Package: This phase packages the compiled code in a format such as the JAR.
- Verify: This phase carries the results from integration tests.
- Install: This phase installs the package into the local repository.
- Deploy: This phase copies the final package to the remote repository. You can conduct this phase to share the package with other developers.
Maven Architecture
The Maven architecture consists of two main parts: the Local Machine and the Remote repository or the local install.
Maven’s projects consist of a Maven Core that further consists of three parts:
- Plugin jar
- Plugin surefire
- Plugin release.
Typically, the build process consists of elements to:
- Build Reports
- Deploy Artifacts (.ear, .war)
- Project Documentation (Javadoc, UML)
- Build File (such as Ant/Maven)
- Libraries
- Test Scripts and
- Source Code
Steps to install Maven
Maven installation consists of the following steps:
- Check if your system has Java installed or not.
- Verify if the java environment variable is set or not.
- Download Maven.
- Unpack the maven zip folder.
- Add the bin directory of apache-maven-3.5.3 (varies according to the version during installation) to the PATH environment and system variable.
- Open cmd and run the mvn -v command. On executing it, if the following lines of code are displayed, then the installation is complete.
Steps to build a Project in Maven
The following are the steps involved in building a project:
- Write code for creating the application. Process it into the source code repository.
- Edit the configuration/ pom.XML / plugin details
- Start building the application.
- Save the output as an EAR or WAR file in a local location.
- Deploy the file from the local location to the productive site
- Update the date and version number of the application on its document
- Generate a report for the application.
Elements of pom.xml file
- project: The foundation of pom.xml file.
- groupId: It refers to the unique project group ID.
- artifactId: Its function is to give a name to the project.
- Version: It has the project’s version number.
- Dependencies: This element generates a list of project dependencies.
- Name: Its function is to give a name to a maven project.
- Scope: It determines the scope for the maven project.
- Packaging: It packages the project to output types like JAR, WAR, etc.
What is Maven Repository and Types of Maven Repository
Maven repository is a directory of packaged JAR files that have some metadata.
There are three types of repository in Maven:
- Local repository
- Central repository and
- Remote repository
Let’s look at these Maven Repositories in detail.
- Local repository: It is the local directory on the developer’s machine. The local repository includes all the downloaded dependencies. Although multiple projects might be dependent on them, Maven only has to download the dependencies once. The default local repository in Maven is the user_home/m2 directory.
- Central repository: The Maven community creates the central Maven repository. If you can’t find dependencies in the local repository, you can look for them in the central repository. Then, Maven downloads them into the local repository.
- Remote repository: It is a repository located on a web server. Everyday use of this repository is to host internal projects in an organization. After downloading dependencies from the web server, Maven can then download them into the local repository.
Advantages and Disadvantages of Maven
Advantages of Maven
- Maven can automatically add dependencies for the project according to requirements by reading the POM file.
- You can quickly start projects in different environments with Maven. There is no need to manage the dependencies injection, processing, etc.
- You can quickly build your project to JAR, WAR, etc., according to your needs.
- You can easily add a new dependency by merely writing the code in the POM file.
Disadvantages of Maven
- You cannot add an existing dependency if the maven code is not available for it.
- The system needs the maven installation and the maven plugin for the IDE to start working.
Frequently asked Maven Interview Questions
List of Maven Commands
Here is a list of the several commands in Maven that help Java developers manage their day to day tasks.
- mvn clean
- mvn compiler: compile
- mvn compiler:testCompile
- mvn package
- mvn install
- mvn deploy
- mvn validate
- mvn dependency: tree
- mvn dependency: analyze
- mvn archetype: generate
- mvn site: site
- mvn test
- mvn compile
- mvn verify
Maven vs ANT
There are four main differences between Maven and ANT:
- Less configuration: The key difference between Maven and ANT is that you require less configuration Maven than ANT. The reason is that Maven depends on the principle of convention over configuration. It creates Java class files on ${basedir}/target/classes and the JAR file on the ${basedir}/target directory. Whereas, for ANT, you need a directory in the ANT build file, such as build.xml.
- Dependency management: A repository stores all the libraries and JARs. Developers can automatically download dependency using a central maven repository in addition to a local repository. On the other hand, ANT uses the ${lib} directory to store its dependencies. Unlike ANT, in Maven, you don’t have to download the dependency manually.
- Interface: Unlike ANT, Maven has a standard, consistent interface to build Java projects.
- Lifecycle: Unlike Maven, ANT does not have a lifecycle?—?you need to define the targets and their dependencies. On the other hand, Maven’s lifecycle is enforced with commands like “mvn install.”
Conclusion
Maven has evolved into a widely popular project management tool. Java developers use this to manage their day to day tasks. Maven has many benefits to the project development process, including improving the performance of the process and the project overall.
Hope you liked reading the What is Maven article. If you have any queries, please drop the question in the comment box.