How to convert an ANT-based NetBeans Module to a Maven-based NetBeans Module?

Apache NetBeans Wiki Index

Note: These pages are being reviewed.

The following list was created while converting a simple plugin with less than 20 classes, so the migration steps of large projects might vary. But you should get the basic idea.

  • create a new maven based NBM using the "New Project"-wizard (to reuse a working configuration)

  • copy the folder src and pom.xml to the old project

  • in pom.xml

  • define a groupId

  • set the name from OpenIDE-Module-Name entry in Bundle.properties

  • set the artifactid from OpenIDE-Module entry in MANIFEST.MF

  • set the version from OpenIDE-Module-Specification-Version entry in MANIFEST.MF

  • remove the line with OpenIDE-Module-Specification-Version entry from MANIFEST.MF

  • remove the line with OpenIDE-Module entry from MANIFEST.MF

  • remove nbproject/genfiles.properties

  • remove nbproject/platform.properties

  • remove nbproject/build-impl.xml

  • remove build.xml

  • move manifest.mf to folder src/main/nbm

  • move your sources (*.java) to src/main/java (or src/test/java) (GIT is very useful here, the commit history isn’t lost)

  • move your resources (not *.java) to src/main/resources (or src/test/resources) (especially Bundle.properties)

  • add dependencies (the most annoying part)

  • foreach dependency entry (code-name-base) in nbproject/project.xml add a dependency via the "Add dependency" dialog OR add a dependency manually to pom.xml

For example use

 <dependency>
   <groupId>org.netbeans.api</groupId>
   <artifactId>org-netbeans-modules-projectapi</artifactId>
   <version>RELEASE73</version>
 </dependency>

for

 <dependency>
   <code-name-base>org.netbeans.modules.projectapi</code-name-base>
   <build-prerequisite/>
   <compile-dependency/>
   <run-dependency>
       <release-version>1</release-version>
       <specification-version>1.46.1</specification-version>
   </run-dependency>
 </dependency>

(!) Note that the dots in the dependency name have to replaced by a dashes

  • add test dependenciesFor example use

 <dependency>
     <groupId>org.netbeans.api</groupId>
     <artifactId>org-netbeans-libs-junit4</artifactId>
     <version>RELEASE73</version>
     <scope>test</scope>
 </dependency>

for

 <test-dependencies>
     <test-type>
         <name>unit</name>
         <test-dependency>
             <code-name-base>org.netbeans.libs.junit4</code-name-base>
             <compile-dependency/>
         </test-dependency>
     </test-type>
 </test-dependencies>

There is still more to do. Like to configure export packages, signing, homepage and so one. Most of these configuration settings defined in the original project.properties have a counterpart in the plugin configuration of the nbm-maven-plugin. See the detailed goal documentation at http://mojo.codehaus.org/nbm-maven/nbm-maven-plugin/nbm-mojo.html