<!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>