This tutorial describes the usage of Maven within the Eclipse IDE for building Java applications.

1. Using Maven with the Eclipse IDE

The Eclipse IDE provides support for the Maven build. This support is developed in the M2Eclipse project.

It provides an editor for modifying the pom file and downloads dependencies if required. It also manages the classpath of the projects in the IDE. You can also use wizards to import existing Maven projects and to create new Maven projects.

2. Installation and configuration of Maven for Eclipse

2.1. Installation

Most Eclipse IDE downloads already include support for the Maven build system. To check, use Help  About and check if you can see the Maven logo (with the M2E) sign.

maven installed10

If Maven support is not yet installed, the following description can be used to install it.

Installation of Maven support into the Eclipse IDE

To install Maven support, select the Help  Install New Software menu entry. To use the latest release, enter the following URL in the Works with field.

http://download.eclipse.org/releases/latest

For the usage of Maven for Java projects, you only need the m2e component.

m2e installation

2.2. Configuration

In most cases the project update is useful. Set the Automatically update Maven projects configuration flag under Window  Preferences  Maven.

eclipse maven configuration projectupdate

3. Exercise: Create a new Maven project via the Eclipse IDE

In this exercise you learn how to create a new Maven project with the Eclips IDE.

3.1. Create Maven project

Create a new Maven project via File  New  Other…​  Maven  Maven Project.

Create Maven project in Eclipse - Part 1

On the first wizard page, you can select if you want to create a simple project. In this case you skip the archetype selection. In this exercise we want to use an archetype as template for our project creation.

Create Maven project in Eclipse - Part 2

Press next, filter for the "maven-archetype-quickstart" archetype and select the entry with the apache group. This is the classical Maven example archetype for project creation.

Create Maven project in Eclipse - Part 3

On the last tab enter the GAV of your project similar to the following screenshot.

Create Maven project in Eclipse - Part 4

3.2. Update project to use Java

Change the pom file of the generated project to use Java 11. For this copy the following code onto the content via the pom.xml tab of the Maven editor.

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.vogella</groupId>
  <artifactId>com.vogella.maven.eclipse</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>com.vogella.maven.eclipse</name>
  <url>http://www.vogella.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>
</project>

3.3. Update Maven settings in Eclipse

Right-click your project and select Maven  Update Project and update your project.

m2e newmavenproject44

3.4. Validate

Validate that the Maven build is correctly configured by running the build. For this right-click the pom.xml file and select Run As  Maven build.

Run Maven project in Eclipse

This opens a dialog which allows to define the parameters for the start. Enter clean verify in the Goals: field and press the Run button.

Run Maven project in Eclipse

4. Exercise: Adjust generated project to use JUnit5 and external libraries

In this exercise you adjust your generated project to use JUnit5.

4.1. Change generated project

Change the pom file of the generated project to use JUnit 5. For this copy the following code onto the content via the pom.xml tab of the Maven editor.

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.vogella</groupId>
  <artifactId>com.vogella.maven.eclipse</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <name>com.vogella.maven.eclipse</name>
  <url>http://www.vogella.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

  (1)
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.22.2</version>
      </plugin>
      <plugin>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.22.2</version>
      </plugin>
    </plugins>
  </build>

  (2)
  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.7.0</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>5.7.0</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

</project>

4.2. Update Maven

Right-click your project and select Maven  Update Project and update your project.

m2e newmavenproject44

4.3. Update test

Update your generated test to JUnit 5 via the following:

package com.vogella.maven.eclipse;


import static org.junit.jupiter.api.Assertions.assertTrue;

import org.junit.jupiter.api.Test;

public class AppTest
{
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
}

4.4. Adding dependencies to your project

The Eclipse Maven tooling makes adding dependencies to the classpath of your project simple. In can directly add it to your pom file, or use the Dependencies tab of the pom editor.

Switch to the Dependencies tab and press the Add button.

me2 adddependency20

In this example we add Gson as dependency. For this we use the latest GAV which we find via https://mvnrepository.com/artifact/com.google.code.gson/gson

If the Maven index was downloaded you can also search directly this dependency via the dialog.

me2 adddependency30

Right-click your project and select Maven  Update Project and update your project.

4.5. Use library

Change or create the App.java class in your src/main/java folder. This classes uses Gson. As Maven added it to your classpath, it should compile and you should be able to start the class via Eclipse.

package com.vogella.maven.lars;

import com.google.gson.Gson;

public class App
{
    public static void main( String[] args )
    {
        Gson gson = new Gson();
        System.out.println(gson.toJson("Hello World!") );
    }
}

4.6. Validate

Run the Maven build again and verify that the build runs successfully.

5. Exercise: Converting a Java project (create with Eclipse) to Maven

This exercise demonstrates how to convert a Java project to a Maven project.

5.1. Create Java project

Create a new Java project called com.vogella.build.maven.simple in Eclipse.

Add one class called Main. This class should have a main method, which write "Hello Maven!" to the command line.

package com.vogella.build.maven.simple;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello Maven!");
    }
}

5.2. Convert to Maven project

Select your project, right-click on it and select Configure  Convert to Maven project…​.

Convert Java project to Maven

This creates a pom.xml file similar to the following.

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.vogella.build.maven.simple</groupId>
  <artifactId>com.vogella.build.maven.simple</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

5.3. Execute the Maven build

Right-click the pom.xml file and select Run As  Maven build.

Run Maven build from Eclipse

Enter "clean install" as Goal.

You have to enter the goals manually. The Select…​ button does not work, the dialog it displays is always empty.

Press the Finish button. This starts the build, which you can follow in the Console view.

Once the build finishes, press F5 on the project to refresh it. You see a target folder, which contains the build artifacts, e.g., a JAR file.

6. Exercise: Create a Java web project in Eclipse using Maven

This exercise demonstrates how to create a web application in Eclipse which uses Maven. It assumes that you have already configured Eclipse for the creation of web applications.

6.1. Create Maven web project project

Create a new Maven project called com.vogella.javaweb.maven.first via the File  New  Other  Maven  Maven Project entry. On the archetype selection, select the maven-archetype-webapp entry and click the Next button.

Webproject archetype with Maven

Enter the group, artifact and version of your new Maven component.

Webproject archetype with Maven

You may see the error: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path. To fix this, right click on your project and select Properties. On the Targeted Runtimes select your web server entry, e.g., Tomcat.

6.2. Build your project

Run your mvn clean verify build command from Eclipse. Validate that there are no issues with the build.

6.3. Run on the server

Right-click your project and select the Run As  Run on Server menu entry.

Start Maven project on server
Start Maven project on server
Start Maven project on server
Start Maven project on server

If you open a browser you should be able to access your webapplication.

Start Maven project on server

7. Exercise: Debug tests

Add a breakpoint in Eclipse in one of your tests.

Start your Maven build on the commadline with the debug parameter.

mvn -Dmaven.surefire.debug test

This stop the command line build once the tests are executed and listen on port 5005 for a remote connection.

In Eclipse select the Run  Debug Configuration…​ and create a new Remote Java Application run configuration.

image::maven-test-debug10.png

Ensure to enter the correct project and the port 5005. Press the btn:Debug[] to connect to the running build. You can now debug your test.

8. References for Webdevelopment with Eclipse

To use Maven in Eclipse for Java web development, you should also install an configure the Eclipse web development tools (WTP). See Eclipse Web Development Tools for a tutorial.

9. Eclipse Maven (m2e) resources