blob: daa45e57cc8f41f66282a8891397eddd22fef356 [file] [log] [blame]
<!DOCTYPE html>
<html class="no-js" lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Apache NetBeans Maven Utilities - NBM Maven Plugin &#x2013; nbm:manifest</title>
<link rel="stylesheet" href="./css/netbeans.css" />
<link href="https://fonts.googleapis.com/css?family=Lato:400,700" rel="stylesheet">
</head>
<body>
<div class="top-bar" id="responsive-menu">
<div class='top-bar-left'>
<a class='title' href="http://netbeans.apache.org"><img src='/images/apache-netbeans.svg' style='padding: 8px; height: 48px;'>Apache NetBeans (incubating)</a>
</div>
<div class="top-bar-right">
<ul class="vertical medium-horizontal menu" style="right: 90px;" data-responsive-menu="drilldown medium-dropdown">
<li> <a href="../nb-repository/index.html">NB Repository Plugin</a> </li>
<li> <strong style='line-height: 1;margin-bottom: 0;padding: 0.7rem 1rem;display: block;' >NBM Plugin</strong> </li>
<li> <a href="../shared/index.html">Shared</a> </li>
<li> <a href="../parent/index.html">Parent</a> </li>
</ul>
</div>
</div>
<div class='grid-container main-content'>
<div id="toc" class="toc">
<div id="toctitle">Overview</div>
<ul class="sectlevel1">
<li><a href="index.html">Usage</a></li>
<li><a href="plugin-info.html">Plugin Goals</a></li>
</ul>
<div id="toctitle">HOWTOs</div>
<ul class="sectlevel1">
<li><a href="buildinstexample.html">Customize installers</a></li>
<li><a href="upgrade.html">Upgrade from older versions</a></li>
</ul>
<div id="toctitle">Deprecated</div>
<ul class="sectlevel1">
<li><a href="nbm.html">Descriptor Format</a></li>
<li><a href="descriptor.html">Example Descriptor</a></li>
</ul>
</div>
<div id="preamble">
<div class="sectionbody">
<div class="section">
<h2><a name="nbm:manifest"></a>nbm:manifest</h2>
<p><b>Full name</b>:</p>
<p>org.netbeans.maven:nbm-maven-plugin:4.2-SNAPSHOT:manifest</p>
<p><b>Description</b>:</p>
<div>Goal for generating NetBeans module system specific manifest
entries, part of <tt>nbm</tt> lifecycle/packaging. In order to
have the generated manifest picked up by the maven-jar-plugin, one
shall add the following configuration snippet to maven-jar-plugin.
<div>
<pre>
<tt>
&lt;plugin&gt;
&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;
&lt;version&gt;3.0.2&lt;/version&gt;
&lt;configuration&gt;
&lt;archive&gt;
&lt;manifestFile&gt;${project.build.outputDirectory</tt>/META-INF/MANIFEST.MF&lt;/manifestfile&gt;
&lt;/archive&gt;
&lt;/configuration&gt;
&lt;/plugin&gt;
}
</pre></div></div>
<p><b>Attributes</b>:</p>
<ul>
<li>Requires a Maven project to be executed.</li>
<li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
<li>Binds by default to the <a class="externalLink" href="http://maven.apache.org/ref/current/maven-core/lifecycles.html">lifecycle phase</a>: <tt>process-classes</tt>.</li>
</ul>
<div class="section">
<h3><a name="Required_Parameters"></a>Required Parameters</h3>
<table class="bodyTable" border="0">
<tr class="a">
<th>Name</th>
<th>Type</th>
<th>Since</th>
<th>Description</th>
</tr>
<tr class="b">
<td><b><a href="#sourceManifestFile">sourceManifestFile</a></b></td>
<td><tt>File</tt></td>
<td><tt>-</tt></td>
<td>Path to manifest file that will be used as base and enhanced with
generated content. Any entry specified in the original file will
not be overwritten<br /><b>Default value is</b>: <tt>${basedir}/src/main/nbm/manifest.mf</tt>.<br /></td>
</tr>
</table>
</div>
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
<table class="bodyTable" border="0">
<tr class="a">
<th>Name</th>
<th>Type</th>
<th>Since</th>
<th>Description</th>
</tr>
<tr class="b">
<td><b><a href="#codeNameBase">codeNameBase</a></b></td>
<td><tt>String</tt></td>
<td><tt>-</tt></td>
<td>codename base of the module, uniquely identifying the module within
the NetBeans runtime. usually the package name equivalent. Can
include the major release version. See <a class="externalLink" href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#how-manifest">NetBeans
Module system docs</a><br /><b>Default value is</b>: <tt>${project.groupId}.${project.artifactId}</tt>.<br /></td>
</tr>
<tr class="a">
<td><b><a href="#descriptor">descriptor</a></b></td>
<td><tt>File</tt></td>
<td><tt>-</tt></td>
<td><b>Deprecated.</b> all content from the module descriptor can be defined as plugin
configuration now, will be removed in 4.0 entirely<br /><b>Default value is</b>: <tt>${basedir}/src/main/nbm/module.xml</tt>.<br /></td>
</tr>
<tr class="b">
<td><b><a href="#moduleDependencies">moduleDependencies</a></b></td>
<td><tt>Dependency[]</tt></td>
<td><tt>-</tt></td>
<td>List of explicit module dependency declarations overriding the
default specification dependency. Useful when depending on a range
of major versions, depending on implementation version etc.
<p>The format is:</p>
<div>
<pre>
&lt;dependency&gt;
&lt;id&gt;groupId:artifactId&lt;/id&gt;
&lt;type&gt;spec|impl|loose&lt;/type&gt;
&lt;explicitValue&gt;the entire dependency token&lt;/explicitValue&gt;
&lt;/dependency&gt;
</pre></div>
<br />
<br />
<p>where <tt>id</tt> is composed of grouId and artifactId of a
dependency defined in effective pom, separated by double colon.
This is mandatory.</p>
<p>Then there are 2 exclusively optional fields <tt>type</tt>
and <tt>explicitValue</tt>, if both are defined
<tt>explicitValue</tt> gets applied.</p>
<p><tt>type</tt> values: <tt>spec</tt> means specification
dependency.That's the default. <tt>impl</tt> means
implementation dependency, only the exact version match will
satisfy the constraint. <tt>loose</tt> means loose dependency,
no requirement on version, the module just has to be present. Not
very common option.</p><br /></td>
</tr>
<tr class="a">
<td><b><a href="#moduleType">moduleType</a></b></td>
<td><tt>String</tt></td>
<td><tt>-</tt></td>
<td>Deployment type of the module, allowed values are
<tt>normal</tt>,<tt>eager</tt>,<tt>autoload</tt>,
<tt>disabled</tt>.
<p><tt>autoload</tt> - Such a module is automatically enabled
when some other module requires it and automatically disabled
otherwise.</p>
<p><tt>eager</tt> - This module type gets automatically enabled
when all it's dependencies are satisfied. Disabled otherwise.</p>
<p><tt>normal</tt> - This is the default value. This kind of
module is enabled/disabled manually by the user. It installs
enabled.</p>
<p><tt>disabled</tt> - This kind of module is enabled/disabled
manually by the user. It installs disabled. Since 3.11</p>
For details, see <a class="externalLink" href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#enablement">Netbeans
Module system docs</a> Since 3.14, for autoload and eager modules,
we automatically set AutoUpdate-Show-In-Client manifest entry to
false, if not defined already otherwise in the manifest. See issue
<a class="externalLink" href="http://jira.codehaus.org/browse/MNBMODULE-194">MNBMODULE-194</a><br /><b>Default value is</b>: <tt>normal</tt>.<br /></td>
</tr>
<tr class="b">
<td><b><a href="#nbmBuildDir">nbmBuildDir</a></b></td>
<td><tt>File</tt></td>
<td><tt>-</tt></td>
<td>NetBeans module assembly build directory. directory where the the
NetBeans jar and nbm file get constructed.<br /><b>Default value is</b>: <tt>${project.build.directory}/nbm</tt>.<br /><b>User property is</b>: <tt>maven.nbm.buildDir</tt>.<br /></td>
</tr>
<tr class="a">
<td><b><a href="#nbmJavahelpSource">nbmJavahelpSource</a></b></td>
<td><tt>File</tt></td>
<td><tt>-</tt></td>
<td>The location of JavaHelp sources for the project. The documentation
itself is expected to be in the directory structure based on
codenamebase of the module. eg. if your codenamebase is
&quot;org.netbeans.modules.apisupport&quot;, then the actual docs files shall
go to
${basedir}/src/main/javahelp/org/netbeans/modules/apisupport/docs.
Obsolete as of NetBeans 7.0 with @HelpSetRegistration.<br /><b>Default value is</b>: <tt>${basedir}/src/main/javahelp</tt>.<br /></td>
</tr>
<tr class="b">
<td><b><a href="#publicPackages">publicPackages</a></b></td>
<td><tt>List</tt></td>
<td><tt>-</tt></td>
<td>A list of module's public packages. If not defined, no packages are
exported as public. Allowed values are single package names or
package names ending with .* which represent the package and all
subpackages. Eg. &quot;org.kleint.milos.api&quot; designates just the one
package, while &quot;org.kleint.milos.spi.*&quot; denotes the spi package an
all it's subpackages.<br /></td>
</tr>
<tr class="a">
<td><b><a href="#useOSGiDependencies">useOSGiDependencies</a></b></td>
<td><tt>boolean</tt></td>
<td><tt>-</tt></td>
<td>When encountering an OSGi bundle among dependencies, the plugin
will generate a direct dependency on the bundle and will not
include the bundle's jar into the nbm. Will only work with NetBeans
6.9+ runtime. Therefore it is off by default. WARNING: Additionally
existing applications/modules need to check modules wrapping
external libraries for library jars that are also OSGi bundles.
Such modules will no longer include the OSGi bundles as part of the
module but will include a modular dependency on the bundle. Modules
depending on these old wrappers shall depend directly on the
bundle, eventually rendering the old library wrapper module
obsolete.<br /><b>Default value is</b>: <tt>false</tt>.<br /></td>
</tr>
<tr class="b">
<td><b><a href="#verifyRuntime">verifyRuntime</a></b></td>
<td><tt>String</tt></td>
<td><tt>-</tt></td>
<td>Verify the runtime NetBeans module dependencies and Class-Path
items generated from Maven dependencies. The check is done by
matching classes used in current project. Allowed values for the
parameter are <tt>fail</tt>, <tt>warn</tt> and
<tt>skip</tt>. The default is <tt>fail</tt> in which case
the validation failure results in a failed build, in the vast
majority of cases the module would fail at runtime anyway.<br /><b>Default value is</b>: <tt>fail</tt>.<br /><b>User property is</b>: <tt>maven.nbm.verify</tt>.<br /></td>
</tr>
</table>
</div>
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
<p><b><a name="codeNameBase">codeNameBase</a>:</b></p>
<div>codename base of the module, uniquely identifying the module within
the NetBeans runtime. usually the package name equivalent. Can
include the major release version. See <a class="externalLink" href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#how-manifest">NetBeans
Module system docs</a></div>
<ul>
<li><b>Type</b>: <tt>java.lang.String</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>Default</b>: <tt>${project.groupId}.${project.artifactId}</tt></li>
</ul><hr />
<p><b><a name="descriptor">descriptor</a>:</b></p>
<div><b>Deprecated.</b> all content from the module descriptor can be defined as plugin
configuration now, will be removed in 4.0 entirely</div>
<div>a NetBeans module descriptor containing dependency information and
more</div>
<ul>
<li><b>Type</b>: <tt>java.io.File</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>Default</b>: <tt>${basedir}/src/main/nbm/module.xml</tt></li>
</ul><hr />
<p><b><a name="moduleDependencies">moduleDependencies</a>:</b></p>
<div>List of explicit module dependency declarations overriding the
default specification dependency. Useful when depending on a range
of major versions, depending on implementation version etc.
<p>The format is:</p>
<div>
<pre>
&lt;dependency&gt;
&lt;id&gt;groupId:artifactId&lt;/id&gt;
&lt;type&gt;spec|impl|loose&lt;/type&gt;
&lt;explicitValue&gt;the entire dependency token&lt;/explicitValue&gt;
&lt;/dependency&gt;
</pre></div>
<br />
<br />
<p>where <tt>id</tt> is composed of grouId and artifactId of a
dependency defined in effective pom, separated by double colon.
This is mandatory.</p>
<p>Then there are 2 exclusively optional fields <tt>type</tt>
and <tt>explicitValue</tt>, if both are defined
<tt>explicitValue</tt> gets applied.</p>
<p><tt>type</tt> values: <tt>spec</tt> means specification
dependency.That's the default. <tt>impl</tt> means
implementation dependency, only the exact version match will
satisfy the constraint. <tt>loose</tt> means loose dependency,
no requirement on version, the module just has to be present. Not
very common option.</p></div>
<ul>
<li><b>Type</b>: <tt>org.netbeans.nbm.model.Dependency[]</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
</ul><hr />
<p><b><a name="moduleType">moduleType</a>:</b></p>
<div>Deployment type of the module, allowed values are
<tt>normal</tt>,<tt>eager</tt>,<tt>autoload</tt>,
<tt>disabled</tt>.
<p><tt>autoload</tt> - Such a module is automatically enabled
when some other module requires it and automatically disabled
otherwise.</p>
<p><tt>eager</tt> - This module type gets automatically enabled
when all it's dependencies are satisfied. Disabled otherwise.</p>
<p><tt>normal</tt> - This is the default value. This kind of
module is enabled/disabled manually by the user. It installs
enabled.</p>
<p><tt>disabled</tt> - This kind of module is enabled/disabled
manually by the user. It installs disabled. Since 3.11</p>
For details, see <a class="externalLink" href="http://bits.netbeans.org/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#enablement">Netbeans
Module system docs</a> Since 3.14, for autoload and eager modules,
we automatically set AutoUpdate-Show-In-Client manifest entry to
false, if not defined already otherwise in the manifest. See issue
<a class="externalLink" href="http://jira.codehaus.org/browse/MNBMODULE-194">MNBMODULE-194</a></div>
<ul>
<li><b>Type</b>: <tt>java.lang.String</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>Default</b>: <tt>normal</tt></li>
</ul><hr />
<p><b><a name="nbmBuildDir">nbmBuildDir</a>:</b></p>
<div>NetBeans module assembly build directory. directory where the the
NetBeans jar and nbm file get constructed.</div>
<ul>
<li><b>Type</b>: <tt>java.io.File</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>User Property</b>: <tt>maven.nbm.buildDir</tt></li>
<li><b>Default</b>: <tt>${project.build.directory}/nbm</tt></li>
</ul><hr />
<p><b><a name="nbmJavahelpSource">nbmJavahelpSource</a>:</b></p>
<div>The location of JavaHelp sources for the project. The documentation
itself is expected to be in the directory structure based on
codenamebase of the module. eg. if your codenamebase is
&quot;org.netbeans.modules.apisupport&quot;, then the actual docs files shall
go to
${basedir}/src/main/javahelp/org/netbeans/modules/apisupport/docs.
Obsolete as of NetBeans 7.0 with @HelpSetRegistration.</div>
<ul>
<li><b>Type</b>: <tt>java.io.File</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>Default</b>: <tt>${basedir}/src/main/javahelp</tt></li>
</ul><hr />
<p><b><a name="publicPackages">publicPackages</a>:</b></p>
<div>A list of module's public packages. If not defined, no packages are
exported as public. Allowed values are single package names or
package names ending with .* which represent the package and all
subpackages. Eg. &quot;org.kleint.milos.api&quot; designates just the one
package, while &quot;org.kleint.milos.spi.*&quot; denotes the spi package an
all it's subpackages.</div>
<ul>
<li><b>Type</b>: <tt>java.util.List</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
</ul><hr />
<p><b><a name="sourceManifestFile">sourceManifestFile</a>:</b></p>
<div>Path to manifest file that will be used as base and enhanced with
generated content. Any entry specified in the original file will
not be overwritten</div>
<ul>
<li><b>Type</b>: <tt>java.io.File</tt></li>
<li><b>Required</b>: <tt>Yes</tt></li>
<li><b>Default</b>: <tt>${basedir}/src/main/nbm/manifest.mf</tt></li>
</ul><hr />
<p><b><a name="useOSGiDependencies">useOSGiDependencies</a>:</b></p>
<div>When encountering an OSGi bundle among dependencies, the plugin
will generate a direct dependency on the bundle and will not
include the bundle's jar into the nbm. Will only work with NetBeans
6.9+ runtime. Therefore it is off by default. WARNING: Additionally
existing applications/modules need to check modules wrapping
external libraries for library jars that are also OSGi bundles.
Such modules will no longer include the OSGi bundles as part of the
module but will include a modular dependency on the bundle. Modules
depending on these old wrappers shall depend directly on the
bundle, eventually rendering the old library wrapper module
obsolete.</div>
<ul>
<li><b>Type</b>: <tt>boolean</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>Default</b>: <tt>false</tt></li>
</ul><hr />
<p><b><a name="verifyRuntime">verifyRuntime</a>:</b></p>
<div>Verify the runtime NetBeans module dependencies and Class-Path
items generated from Maven dependencies. The check is done by
matching classes used in current project. Allowed values for the
parameter are <tt>fail</tt>, <tt>warn</tt> and
<tt>skip</tt>. The default is <tt>fail</tt> in which case
the validation failure results in a failed build, in the vast
majority of cases the module would fail at runtime anyway.</div>
<ul>
<li><b>Type</b>: <tt>java.lang.String</tt></li>
<li><b>Required</b>: <tt>No</tt></li>
<li><b>User Property</b>: <tt>maven.nbm.verify</tt></li>
<li><b>Default</b>: <tt>fail</tt></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class='grid-container incubator-area' style='margin-top: 64px'>
<div class='grid-x grid-padding-x'>
<div class='large-auto cell text-center'>
<a href="https://www.apache.org/">
<img style="width: 320px" title="Apache Software Foundation" src="/images/asf_logo_wide.svg" />
</a>
</div>
<div class='large-auto cell text-center'>
<a href="https://www.apache.org/events/current-event.html">
<img style="width:234px; height: 60px;" title="Apache Software Foundation current event" src="https://www.apache.org/events/current-event-234x60.png"/>
</a>
</div>
</div>
</div>
<div class='footer-disclaimer'>
<div class="footer-disclaimer-content">
<p>Copyright &copy; 2017-2018 <a href="https://www.apache.org">The Apache Software Foundation</a>.</p>
<p>Licensed under the Apache <a href="https://www.apache.org/licenses/">license</a>, version 2.0</p>
<p><a href="https://incubator.apache.org/" alt="Apache Incubator"><img src='/images/incubator_feather_egg_logo_bw_crop.png' title='Apache Incubator'></img></a></p>
<div style='max-width: 40em; margin: 0 auto'>
<p>Apache NetBeans is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.</p>
<p>Apache Incubator, Apache, the Apache feather logo, the Apache NetBeans logo, and the Apache Incubator project logo are trademarks of <a href="https://www.apache.org">The Apache Software Foundation</a>.</p>
<p>Oracle and Java are registered trademarks of Oracle and/or its affiliates.</p>
</div>
</div>
</div>
<a href="https://github.com/apache/incubator-netbeans-mavenutils"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_green_007200.png" alt="Fork me on GitHub"></a>
<script src="/js/vendor/jquery-3.2.1.min.js"></script>
<script src="/js/vendor/what-input.js"></script>
<script src="/js/vendor/jquery.colorbox-min.js"></script>
<script src="/js/vendor/foundation.min.js"></script>
<script src="/js/netbeans.js"></script>
<script>
$(function(){ $(document).foundation(); });
</script>
</body>