POM Migration
POM Skeleton
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- (1) --> <parent> <artifactId>snap-engine</artifactId> <groupId>org.esa.snap</groupId> <version>2.0.0-SNAPSHOT</version> </parent> <!-- (2) --> <artifactId>mymod</artifactId> <!-- (3) --> <packaging>nbm</packaging> <!-- (4) --> <name>Human-readable mymod name</name> <!-- (5) --> <description>Human-readable mymod description.</description> <dependencies> <!-- (6) --> <dependency> <groupId>jdom</groupId> <artifactId>jdom2</artifactId> <version>2.1</version> </dependency> <!-- (7) --> <dependency> <groupId>org.esa.snap</groupId> <artifactId>snap-ceres-core</artifactId> </dependency> <dependency> <groupId>org.esa.snap</groupId> <artifactId>snap-core</artifactId> </dependency> </dependencies> <build> <plugins> <!-- (8) --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>nbm-maven-plugin</artifactId> <configuration> <publicPackages> <!-- (9) --> <publicPackage>org.jdom2.*</publicPackage> <!-- (10) --> <publicPackage>org.esa.snap.myext</publicPackage> </publicPackages> </configuration> </plugin> <!-- (11) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <useDefaultManifestFile>true</useDefaultManifestFile> </configuration> </plugin> </plugins> </build> </project>
- Use the parent for extension modules.
- The
artifactId
will be used with thegroupId
to generate the manifest headerOpenIDE-Module
. ThegroupId
andversion
are inherited from parent in this case.version
will generate the manifest headersOpenIDE-Module-Specification-Version
andOpenIDE-Module-Implementation-Version
, the latter will include a timestamp. - Packing must always be nbm to generate NBM files.
- Name will generate the manifest header
OpenIDE-Module-Name
. - Description will be used to generate
OpenIDE-Module-Short-Description
- This 3rd-party dependency will result in a private JAR located in ${cluster}/modules/ext/org.esa.snap.mymod/jdom2.jar. Another NB module depending on mymod and wanting to use jdom2 does not need to import it explicitely again as long as you export its API as a public package(s). See below. If you don't export the jdom2 API, a second private ext-JAR will be created in the cluster.
- The following are NB-module dependencies from which the manifest header
OpenIDE-Module-Module-Dependencies
will be derived. - Required declaration of the Maven NBM plugin.
- Optinally export the 3rd party jdom2 API so that other modules don't need to import the JAR.
- Optionally export API from myext.
Note thatorg.esa.snap.myext
only exports classes in themyext
package, while the valueorg.esa.snap.myext.*
exportsmyext
plus all subpackages, recursively. - Required declaration of the Maven JAR Plugin.
useDefaultManifestFile
must be set totrue
.