Georgia Ingham Georgia is a Java Developer. She has spoken at lots of conferences. Her hobbies include reading, completing puzzle books and cycling.

Convert Ant based NetBeans project to a Maven project

3 min read

At IDR Solutions this year, we have decided to carry out a few changes to how we currently operate. One of these changes is to change our Ant based projects to Maven based projects. For those of you who don’t know what Maven is then you can look at these articles to learn more: https://maven.apache.org/what-is-maven.html and https://en.wikipedia.org/wiki/Apache_Maven.

Why should we switch our build automation tool you ask? Well, we have several reasons:

  • – To keep our skills current
  • – Simpler and easier for new developers to learn and understand. No complicated build script needed.
  • – More tools can integrate with Maven
  • – Dependency management – When setting up a new computer there are lots of little tasks that need to be carried out before a developer can start tapping away at their keyboard. One of these would be downloading and adding all the relevant jars. Maven would carry out these tasks for you.

I have read a few different tutorials on how to accomplish this conversion but I wanted to keep my old files e.g. build.xml, nbproject folder, etc. without having to move and keep them elsewhere. Having to do this for every project could be tedious, especially if you ever want to convert back to Ant. Most people recommended creating new projects but that could mess up your Source Control Management software so you can’t see your history. I have used a different method which I will explain in the next few steps.

1) Current Projects

Before I tell you how to do the conversion, I will just show you two projects that I will convert. One project (testProject) uses a class called JPegEncoder from the Jdeli project. Jdeli requires external jars to compile.

currentProjects

2) Rename Ant files

First we want to keep our current NetBeans configuration files but we don’t want to delete or move them, so we are just going to rename them so NetBeans won’t recognize them. Before renaming I would recommend closing the project in NetBeans and closing NetBeans. Leaving either open might create the files again once you rename them. I have attached my file structure below for testProject. You need to rename your nbproject folder and files manifest.mf and build.xml. You don’t technically need to rename manifest.mf because both Ant and Maven use this. Maven will create it’s own if it is needed so rename your current one as you can use it if you ever want to switch back to Ant.

rename

3) Add a POM

Maven projects require a pom.xml in your project directory (where the src and manifest directories are). NetBeans won’t recognize a project that doesn’t have a POM. The easiest way to get a POM is to create a new Maven project and copy it into your current project. You can create a Maven project by right-clicking in your Projects view, selecting New Project, then selecting the Maven category and clicking on Java Application. After pasting it into your current project you will have to edit it. For example for testProject:

<?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.idrsolutions</groupId>
   <artifactId>testProject</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
</project>

4) Re-arrange the source directory

Ant projects have a source directory (src) that contains your packages and classes. Maven uses a slightly different structure: src/main/java and because of this we will have to add these directories and move your current packages into the java directory

srcDir

Similarly you will have to move any packages in your test directory (if you have any). These will have to be moved to src/test/java.

5) Dependencies

Now you can open your projects in NetBeans and they will be Maven projects. We are almost done now. See how these projects still have errors? The Jdeli project requires some external jars in order to compile and testProject needs Jdeli in order to work.

MavenProjects

Lets fix testProject first. To do this we need to add a dependency for a local project. Right-click on your testProject’s Dependencies folder in Project view and select Add Dependency. This will open a new window. From there select the Open Projects tab. Here you will see a list of your open projects. Select Jdeli and Add it. Simple and easy.

testProjectdependency1

You can see in your testProjects dependencies folder that a new dependency has been added.

testProjectDependency

The project will still have errors though as we need to fix jdeli, which requires many external jars. I will give you one example so that you will know how this works and add the rest without documenting them. First right-click on your jdeli’s Dependencies folder in Project view and select Add Dependency. Now we are going to search for the jar we need – bcmail. NetBeans links up with the Maven repository and carries out the search and retrieve steps for you.

jdelisearch

Select the version you need and select Add at the bottom. Use this process for all of your external jars. Once you have them all proceed onto the next step.

5) Clean and build your projects

Now just clean and build your projects by right clicking their top-most nodes, selecting Clean and Build and voila. From Ant to Maven in 5 simple steps.

finishedHopefully you found this tutorial useful.



Our software libraries allow you to

Convert PDF to HTML in Java
Convert PDF Forms to HTML5 in Java
Convert PDF Documents to an image in Java
Work with PDF Documents in Java
Read and Write AVIF, HEIC, WEBP and other image formats
Georgia Ingham Georgia is a Java Developer. She has spoken at lots of conferences. Her hobbies include reading, completing puzzle books and cycling.

4 Replies to “Convert Ant based NetBeans project to a Maven project”

  1. If you are in a migration scenario, there is no need to move the sources.

    Simply configure Maven to use the existing directories. Example:

    src/javas
    src/tests


    Have a look in the super-pom/effective-pom see some more defaults.

    But when you move files, then take care that the versioning system tracks the changes as renames not at delete/add! Else the history of your files isgone.

    1. We created main/java and used move (without refactoring) in the NetBeans file view. This kept the entire history for all the files.

      Generally I am very impressed with the way NetBeans preserves information when you copy of move files.

  2. The code example again with proper format

    <build>
    <sourceDirectory>src/java</sourceDirectory>
    <testSourceDirectory>src/tests</testSourceDirectory>
    </build>

Comments are closed.