<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8 from org.apache.maven.plugins:maven-plugin-plugin:3.5.1:report at 2018-04-12
 | Rendered using Apache Maven Fluido Skin 1.7
-->
<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="20180412" />
    <meta http-equiv="Content-Language" content="en" />
    <title>eclipse-macsigner-plugin &#x2013; Plugin Documentation</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.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.7.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="https://eclipse.org" id="bannerLeft"><img src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse.png"  alt="Eclipse"/></a></div>
        <div class="pull-right"></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2018-04-12<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.1.5</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">CBI Maven Plugins</li>
    <li><a href="../index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../eclipse-jarsigner-plugin/plugin-info.html" title="Jar Signer"><span class="none"></span>Jar Signer</a></li>
    <li><a href="../eclipse-winsigner-plugin/plugin-info.html" title="Windows Exe Signer"><span class="none"></span>Windows Exe Signer</a></li>
    <li><a href="../eclipse-macsigner-plugin/plugin-info.html" title="macOS App Signer"><span class="none"></span>macOS App Signer</a></li>
    <li><a href="../eclipse-dmg-packager/plugin-info.html" title="macOS DMG Packager"><span class="none"></span>macOS DMG Packager</a></li>
    <li><a href="../eclipse-flatpak-packager/plugin-info.html" title="Linux Flatpak Packager"><span class="none"></span>Linux Flatpak Packager</a></li>
    <li><a href="../eclipse-cbi-plugin/plugin-info.html" title="Utilities"><span class="none"></span>Utilities</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" >
<div class="section">
<h2><a name="Plugin_Documentation"></a>Plugin Documentation</h2><a name="Plugin_Documentation"></a>
<p>Goals available for this plugin:</p>
<table border="0" class="table table-striped">
<tr class="a">
<th>Goal</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="sign-mojo.html">eclipse-macsigner:sign</a></td>
<td>Signs OS X applications found in the project build directory using
the Eclipse OS X application signer webservice.</td></tr></table>
<div class="section">
<h3><a name="System_Requirements"></a>System Requirements</h3><a name="System_Requirements"></a>
<p>The following specifies the minimum requirements to run this Maven plugin:</p>
<table border="0" class="table table-striped">
<tr class="a">
<td>Maven</td>
<td>3.3.1</td></tr>
<tr class="b">
<td>JDK</td>
<td>1.8</td></tr>
<tr class="a">
<td>Memory</td>
<td>No minimum requirement.</td></tr>
<tr class="b">
<td>Disk Space</td>
<td>No minimum requirement.</td></tr></table></div>
<div class="section">
<h3><a name="Usage"></a>Usage</h3><a name="Usage"></a>
<p>You should specify the version in your project's plugin configuration:</p>
<div class="source"><pre class="prettyprint">&lt;project&gt;
  ...
  &lt;build&gt;
    &lt;!-- To define the plugin version in your parent POM --&gt;
    &lt;pluginManagement&gt;
      &lt;plugins&gt;
        &lt;plugin&gt;
          &lt;groupId&gt;org.eclipse.cbi.maven.plugins&lt;/groupId&gt;
          &lt;artifactId&gt;eclipse-macsigner-plugin&lt;/artifactId&gt;
          &lt;version&gt;1.1.5&lt;/version&gt;
        &lt;/plugin&gt;
        ...
      &lt;/plugins&gt;
    &lt;/pluginManagement&gt;
    &lt;!-- To use the plugin goals in your POM or parent POM --&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.eclipse.cbi.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;eclipse-macsigner-plugin&lt;/artifactId&gt;
        &lt;version&gt;1.1.5&lt;/version&gt;
      &lt;/plugin&gt;
      ...
    &lt;/plugins&gt;
  &lt;/build&gt;
  ...
&lt;/project&gt;
</pre></div>
<p>For more information, see <a class="externalLink" href="http://maven.apache.org/guides/mini/guide-configuring-plugins.html">&quot;Guide to Configuring Plug-ins&quot;</a></p></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2018
<a href="http://eclipse.org/">Eclipse Foundation</a>.
All rights reserved.</p>
        </div>
      </div>
    </footer>
  </body>
</html>
