<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-10-20
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<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="20151020" />
    <meta http-equiv="Content-Language" content="en" />
    <title>eclipse-winsigner-plugin &#x2013; eclipse-winsigner:sign</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.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.3.0.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://eclipse.org/eclipse.org-common/themes/Nova/images/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: 2015-10-20</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.1.3-SNAPSHOT</li>
                      
                
                    
      
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <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">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-jarsigner-plugin/plugin-info.html" title="Jar Signer">
          <i class="none"></i>
        Jar Signer</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-winsigner-plugin/plugin-info.html" title="Windows Exe Signer">
          <i class="none"></i>
        Windows Exe Signer</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-macsigner-plugin/plugin-info.html" title="OS X App Signer">
          <i class="none"></i>
        OS X App Signer</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-dmg-packager/plugin-info.html" title="OS X DMG Packager">
          <i class="none"></i>
        OS X DMG Packager</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-cbi-plugin/plugin-info.html" title="Utilities">
          <i class="none"></i>
        Utilities</a>
            </li>
            </ul>
                
                    
                
          <hr class="divider" />

           <div id="poweredBy">
                            <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="span9" >
                                  
            
  
    <div class="section">
<h2><a name="eclipse-winsigner:sign"></a>eclipse-winsigner:sign</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.cbi.maven.plugins:eclipse-winsigner-plugin:1.1.3-SNAPSHOT:sign</p>
      
<p><b>Description</b>:</p>
      
<div>Signs executables found in the project build directory using the
Eclipse Windows executable signer webservice.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</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>package</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Required_Parameters"></a>Required Parameters</h3>
        
<table class="table table-striped" 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="#signerUrl">signerUrl</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>1.0.4</tt></td>
            
<td>The signing service URL for signing Windows binaries. The signing
service should return a signed exe file.<br /><b>Default value is</b>: <tt>http://build.eclipse.org:31338/winsign.php</tt>.<br /><b>User property is</b>: <tt>cbi.winsigner.signerUrl</tt>.</td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" 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="#baseSearchDir">baseSearchDir</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>The base directory to search for executables to sign. The
executable name to search for can be configured with parameter
<tt>fileNames</tt>. This parameter is ignored if
<tt>signFiles</tt> is set.<br /><b>Default value is</b>: <tt>${project.build.directory}/products/</tt>.<br /><b>User property is</b>: <tt>cbi.winsigner.baseSearchDir</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#continueOnFail">continueOnFail</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.0.5 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>Whether the build should be stopped if the signing process fails.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>cbi.winsigner.continueOnFail</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#deprecatedBaseSearchDir">deprecatedBaseSearchDir</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>1.0.4 (for the user property, since 1.1.3 for the parameter)</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>baseSearchDir</tt> is deprecated. You
should use the qualified property
<tt>cbi.winsigner.baseSearchDir</tt> instead. The
<tt>deprecatedBaseSearchDir</tt> parameter has been introduced
to support this deprecated user property for backward compatibility
only.<br /><b>User property is</b>: <tt>baseSearchDir</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#deprecatedContinueOnFail">deprecatedContinueOnFail</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>1.0.5 (for the user property, since 1.1.3 for the parameter).</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>continueOnFail</tt> is deprecated. You
should use the qualified property
<tt>cbi.winsigner.continueOnFail</tt> instead. The
<tt>deprecatedContinueOnFail</tt> parameter has been introduced
to support this deprecated user property for backward compatibility
only.<br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>continueOnFail</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#deprecatedFileNames">deprecatedFileNames</a></b></td>
            
<td><tt>Set</tt></td>
            
<td><tt>1.0.4 (for the user property, since 1.1.3 for the parameter).</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>fileNames</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.fileNames</tt>
instead. The <tt>deprecatedFileNames</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.<br /><b>User property is</b>: <tt>fileNames</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#deprecatedRetryLimit">deprecatedRetryLimit</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>1.1.0 (for the user property, since 1.1.3 for the parameter).</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>retryLimit</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.retryLimit</tt>
instead. The <tt>deprecatedRetryLimit</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.<br /><b>Default value is</b>: <tt>3</tt>.<br /><b>User property is</b>: <tt>retryLimit</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#deprecatedRetryTimer">deprecatedRetryTimer</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>1.1.0 (for the user property, since 1.1.3 for the parameter).</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>retryTimer</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.retryTimer</tt>
instead. The <tt>deprecatedRetryTimer</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.<br /><b>Default value is</b>: <tt>10</tt>.<br /><b>User property is</b>: <tt>retryTimer</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#deprecatedSignFiles">deprecatedSignFiles</a></b></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>1.0.4 (for the user property, since 1.1.3 for the parameter)</tt></td>
            
<td><b>Deprecated.</b> The user property <tt>signFiles</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.signFiles</tt>
instead. The <tt>deprecatedSignFiles</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.<br /><b>User property is</b>: <tt>signFiles</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#fileNames">fileNames</a></b></td>
            
<td><tt>Set</tt></td>
            
<td><tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>List of file names to sign. These file names will be searched in
<tt>baseSearchDir</tt>. This parameter is ignored if
<tt>signFiles</tt> is set. 

<p>Default value is <tt>{&quot;eclipse.exe&quot;,
&quot;eclipsec.exe&quot;}}</tt>.</p><br /><b>User property is</b>: <tt>cbi.winsigner.fileNames</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#retryLimit">retryLimit</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>1.1.0 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>Number of times to retry signing if server fails to sign<br /><b>Default value is</b>: <tt>3</tt>.<br /><b>User property is</b>: <tt>cbi.winsigner.retryLimit</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#retryTimer">retryTimer</a></b></td>
            
<td><tt>int</tt></td>
            
<td><tt>1.1.0 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>Number of seconds to wait before retrying to sign<br /><b>Default value is</b>: <tt>10</tt>.<br /><b>User property is</b>: <tt>cbi.winsigner.retryTimer</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#signFiles">signFiles</a></b></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></td>
            
<td>The list of <b>absolute</b> paths of executables to be signed. If
configured, only these executables will be signed and the
parameters <tt>baseSearchDir</tt> and <tt>fileNames</tt>
will be ignored.<br /><b>User property is</b>: <tt>cbi.winsigner.signFiles</tt>.</td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="baseSearchDir">baseSearchDir</a>:</b></p>
        
<div>The base directory to search for executables to sign. The
executable name to search for can be configured with parameter
<tt>fileNames</tt>. This parameter is ignored if
<tt>signFiles</tt> is set.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.baseSearchDir</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/products/</tt></li>
        </ul><hr />
<p><b><a name="continueOnFail">continueOnFail</a>:</b></p>
        
<div>Whether the build should be stopped if the signing process fails.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.0.5 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.continueOnFail</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="deprecatedBaseSearchDir">deprecatedBaseSearchDir</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>baseSearchDir</tt> is deprecated. You
should use the qualified property
<tt>cbi.winsigner.baseSearchDir</tt> instead. The
<tt>deprecatedBaseSearchDir</tt> parameter has been introduced
to support this deprecated user property for backward compatibility
only.</div>
        
<div>The base directory to search for executables to sign. The
executable name to search for can be configured with parameter
<tt>fileNames</tt>. This parameter is ignored if
<tt>signFiles</tt> is set.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the user property, since 1.1.3 for the parameter)</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>baseSearchDir</tt></li>
        </ul><hr />
<p><b><a name="deprecatedContinueOnFail">deprecatedContinueOnFail</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>continueOnFail</tt> is deprecated. You
should use the qualified property
<tt>cbi.winsigner.continueOnFail</tt> instead. The
<tt>deprecatedContinueOnFail</tt> parameter has been introduced
to support this deprecated user property for backward compatibility
only.</div>
        
<div>Whether the build should be stopped if the signing process fails.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Since</b>: <tt>1.0.5 (for the user property, since 1.1.3 for the parameter).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>continueOnFail</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="deprecatedFileNames">deprecatedFileNames</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>fileNames</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.fileNames</tt>
instead. The <tt>deprecatedFileNames</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.</div>
        
<div>List of file names to sign. These file names will be searched in
<tt>baseSearchDir</tt>. This parameter is ignored if
<tt>signFiles</tt> is set. 

<p>Default value is <tt>{eclipse.exe, eclipsec.exe}</tt>.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the user property, since 1.1.3 for the parameter).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>fileNames</tt></li>
        </ul><hr />
<p><b><a name="deprecatedRetryLimit">deprecatedRetryLimit</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>retryLimit</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.retryLimit</tt>
instead. The <tt>deprecatedRetryLimit</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.</div>
        
<div>Number of times to retry signing if server fails to sign</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Since</b>: <tt>1.1.0 (for the user property, since 1.1.3 for the parameter).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>retryLimit</tt></li>
          
<li><b>Default</b>: <tt>3</tt></li>
        </ul><hr />
<p><b><a name="deprecatedRetryTimer">deprecatedRetryTimer</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>retryTimer</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.retryTimer</tt>
instead. The <tt>deprecatedRetryTimer</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.</div>
        
<div>Number of seconds to wait before retrying to sign</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Since</b>: <tt>1.1.0 (for the user property, since 1.1.3 for the parameter).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>retryTimer</tt></li>
          
<li><b>Default</b>: <tt>10</tt></li>
        </ul><hr />
<p><b><a name="deprecatedSignFiles">deprecatedSignFiles</a>:</b></p>
        
<div><b>Deprecated.</b> The user property <tt>signFiles</tt> is deprecated. You should
use the qualified property <tt>cbi.winsigner.signFiles</tt>
instead. The <tt>deprecatedSignFiles</tt> parameter has been
introduced to support this deprecated user property for backward
compatibility only.</div>
        
<div>The list of <b>absolute</b> paths of executables to be signed. If
configured, only these executables will be signed and the
parameters <tt>baseSearchDir</tt> and <tt>fileNames</tt>
will be ignored.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the user property, since 1.1.3 for the parameter)</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>signFiles</tt></li>
        </ul><hr />
<p><b><a name="fileNames">fileNames</a>:</b></p>
        
<div>List of file names to sign. These file names will be searched in
<tt>baseSearchDir</tt>. This parameter is ignored if
<tt>signFiles</tt> is set. 

<p>Default value is <tt>{&quot;eclipse.exe&quot;,
&quot;eclipsec.exe&quot;}}</tt>.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.util.Set</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.fileNames</tt></li>
        </ul><hr />
<p><b><a name="retryLimit">retryLimit</a>:</b></p>
        
<div>Number of times to retry signing if server fails to sign</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Since</b>: <tt>1.1.0 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.retryLimit</tt></li>
          
<li><b>Default</b>: <tt>3</tt></li>
        </ul><hr />
<p><b><a name="retryTimer">retryTimer</a>:</b></p>
        
<div>Number of seconds to wait before retrying to sign</div>
        
<ul>
          
<li><b>Type</b>: <tt>int</tt></li>
          
<li><b>Since</b>: <tt>1.1.0 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.retryTimer</tt></li>
          
<li><b>Default</b>: <tt>10</tt></li>
        </ul><hr />
<p><b><a name="signFiles">signFiles</a>:</b></p>
        
<div>The list of <b>absolute</b> paths of executables to be signed. If
configured, only these executables will be signed and the
parameters <tt>baseSearchDir</tt> and <tt>fileNames</tt>
will be ignored.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Since</b>: <tt>1.0.4 (for the parameter, since 1.1.3 for the qualified user
       property).</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.signFiles</tt></li>
        </ul><hr />
<p><b><a name="signerUrl">signerUrl</a>:</b></p>
        
<div>The signing service URL for signing Windows binaries. The signing
service should return a signed exe file.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>1.0.4</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>cbi.winsigner.signerUrl</tt></li>
          
<li><b>Default</b>: <tt>http://build.eclipse.org:31338/winsign.php</tt></li>
        </ul>
      </div>
    </div>
  

                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2015
                        <a href="http://eclipse.org/">Eclipse Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>
