<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2016-01-28 
 | Rendered using Apache Maven Fluido Skin 1.4
-->
<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="20160128" />
    <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.4.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.4.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: 2016-01-28
                      <span class="divider">|</span>
                   </li>
                  <li id="projectVersion">Version: 1.1.3
                      </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="OS X App Signer">
          <span class="none"></span>
        OS X App Signer</a>
            </li>
                
      <li>
  
                          <a href="../eclipse-dmg-packager/plugin-info.html" title="OS X DMG Packager">
          <span class="none"></span>
        OS X DMG 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="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: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-fluid">
                                      <p >Copyright &copy;                    2016
                        <a href="http://eclipse.org/">Eclipse Foundation</a>.
            All rights reserved.      
                    
      </p>
                </div>

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