NAR Dependencies

Dependencies on other NARs are handled by the standard maven dependency mechanism. The type for NAR files is nar, however to ease the inclusion of Java code and lookup of properties any nar file is always published as an attached artifact to a jar artifact. A nar dependency therefore becomes a jar dependency and is declared in the following way:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>dependent-group</groupId>
      <artifactId>dependent-artifact</artifactId>
      <version>dependent-version</version>
    </dependency>
  </dependencies>
</project>

as is any other jar dependency. Maven will automatically download this jar file for any goal that requires it.

The NAR plugin knows this is a nar dependency by looking inside the jar file for a properties file with the following name:

META-INF/nar/groupId/artifactId/nar.properties

This file is normally generated in the nar-package goal for pickup by the standard package goal to be included in the jar file. TBD there is no way to include a hand-written file.

The file may contain the following properties:

PropertyDefault-ValueDescription
nar.noarchComma separated list of architecture independent nars to download. Each entry consists of groupId:artifactId:type:classifier, for example: ch.cern:cernlib:nar:noarch
nar.staticComma separated list of static nar files to download. Each entry consists of groupId:artifactId:type:classifier. ${aol} can be used to be replaced by the current aol value, for example: ch.cern:cernlib:nar:${aol}-static

TBD more values are possible