<!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-winsigner-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-winsigner:sign</a></td>
<td>Signs executables found in the project build directory using the
Eclipse Windows executable 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-winsigner-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-winsigner-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>
