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 include the Maven tooling already. To check, use Help  About and check if you can see the M2E sign.

image::maven-installed10.png[].

In this case you can skip the installation description.

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 enabled project via Eclipse

In this exercise you create a new Maven project in the IDE Eclipse.

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. Change generated project

Change the pom file of the generated project to use Java 11 and 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>

3.3. Update Maven

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

m2e newmavenproject44

3.4. 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 );
    }
}

3.5. Run the build

Validate that the generate setup works correctly 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

3.6. 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.

3.7. 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!") );
    }
}

3.8. Validate

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

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

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

4.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!");
    }
}

4.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>

4.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.

5. 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.

5.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.

5.2. Build your project

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

5.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

6. 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.

7. 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.

8. Eclipse Maven (m2e) resources

9. vogella training and consulting support

Copyright © 2012-2019 vogella GmbH. Free use of the software examples is granted under the terms of the Eclipse Public License 2.0. This tutorial is published under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Germany license.