<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-07-13 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20200713" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Sling Scripting Bundle Maven Plugin &#x2013; </title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><div id="bannerLeft"><h2>Apache Sling Scripting Bundle Maven Plugin</h2>
</div>
</div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2020-07-13<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 0.2.2</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Overview</li>
    <li class="active"><a href="#"><span class="none"></span>Introduction</a>
  </li>
    <li><a href="plugin-info.html" title="Goals"><span class="none"></span>Goals</a>  </li>
    <li><a href="usage.html" title="Usage"><span class="none"></span>Usage</a>  </li>
          <li class="nav-header">Project Documentation</li>
    <li><a href="project-info.html" title="Project Information"><span class="icon-chevron-down"></span>Project Information</a>
      <ul class="nav nav-list">
    <li><a href="dependencies.html" title="Dependencies"><span class="none"></span>Dependencies</a>  </li>
    <li><a href="dependency-info.html" title="Dependency Information"><span class="none"></span>Dependency Information</a>  </li>
    <li><a href="dependency-management.html" title="Dependency Management"><span class="none"></span>Dependency Management</a>  </li>
    <li><a href="distribution-management.html" title="Distribution Management"><span class="none"></span>Distribution Management</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>About</a>
  </li>
    <li><a href="issue-management.html" title="Issue Management"><span class="none"></span>Issue Management</a>  </li>
    <li><a href="licenses.html" title="Licenses"><span class="none"></span>Licenses</a>  </li>
    <li><a href="mailing-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="plugin-management.html" title="Plugin Management"><span class="none"></span>Plugin Management</a>  </li>
    <li><a href="plugins.html" title="Plugins"><span class="none"></span>Plugins</a>  </li>
    <li><a href="scm.html" title="Source Code Management"><span class="none"></span>Source Code Management</a>  </li>
    <li><a href="summary.html" title="Summary"><span class="none"></span>Summary</a>  </li>
    <li><a href="team.html" title="Team"><span class="none"></span>Team</a>  </li>
      </ul>
  </li>
    <li><a href="project-reports.html" title="Project Reports"><span class="icon-chevron-right"></span>Project Reports</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<p>The Apache Sling Scripting Bundle Maven Plugin provides support for generating OSGi bundles that provide embedded or precompiled scripts to perform server-side rendering in an Apache Sling application. When executed, the plugin will define two project properties (<tt>org.apache.sling.scriptingbundle.maven.plugin.Require-Capability</tt> and <tt>org.apache.sling.scriptingbundle.maven.plugin.Provide-Capability</tt>) which can be used to populate the corresponding bundle headers.</p>
<p>Bundles that get extended by the <a class="externalLink" href="https://github.com/apache/sling-org-apache-sling-servlets-resolver"><tt>org.apache.sling.servlets.resolver</tt></a> with these <tt>Requirements</tt> and<tt>Capabilities</tt> will have their scripts made available automatically with added versioning and dependency support.</p>
<p>Manually defining the <tt>Require-Capability</tt> and <tt>Provide-Capability</tt> bundle headers is error-prone and unnecessary, as they can be derived from the file-system layout required for scripts by the resolver (for the most part).</p>
<div class="section">
<h2><a name="Goals"></a>Goals</h2>
<p>The Scripting Bundle Maven Plugin has only one goal:</p>
<ul>

<li><a href="metadata-mojo.html">scriptingbundle:metadata</a> is bound to the package phase and is used to generate the above mentioned project properties.</li>
</ul></div>
<div class="section">
<h2><a name="Usage"></a>Usage</h2>
<p>General instructions on how to use the Scripting Bundle Maven Plugin can be found on the <a href="usage.html">usage</a> page.</p>
<p>In case you still have questions regarding the plugin&#x2019;s usage feel free to contact the Apache Sling Development List. The posts to the mailing list are archived and could already contain the answer to your question as part of an older thread. Hence, it is also worth browsing/searching the mail archive.</p>
<p>If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our issue tracker. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our source repository and will find supplementary information in the Maven guide.</p></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2007&#x2013;2020
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
