<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2014-07-14
 | 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="20140714" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Eclipse :: CBI :: The Eclipse CBI Maven Plugin - Project Information</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: 2014-07-14</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.1.0</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 Plugins</li>
                                
      <li>
    
                          <a href="../project-info.html" title="Project Info">
          <i class="none"></i>
        Project Info</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-jarsigner-plugin/plugin-info.html" title="Eclipse Jar Signing Plugin">
          <i class="none"></i>
        Eclipse Jar Signing Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-macsigner-plugin/plugin-info.html" title="Eclipse Mac Signing Plugin">
          <i class="none"></i>
        Eclipse Mac Signing Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../eclipse-winsigner-plugin/plugin-info.html" title="Eclipse Windows Signing Plugin">
          <i class="none"></i>
        Eclipse Windows Signing Plugin</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>Project Information<a name="Project_Information"></a></h2>
<p>This document provides an overview of the various documents and links that are part of this project's general information. All of this content is automatically generated by <a class="externalLink" href="http://maven.apache.org">Maven</a> on behalf of the project.</p>
<div class="section">
<h3>Overview<a name="Overview"></a></h3>
<table border="0" class="table table-striped">
<tr class="a">
<th>Document</th>
<th>Description</th></tr>
<tr class="b">
<td><a href="index.html">About</a></td>
<td>CBI plugins are created to enable the Eclipse community to use
      various services at Eclipse including the signing infrastructure.</td></tr>
<tr class="a">
<td><a href="plugin-management.html">Plugin Management</a></td>
<td>This document lists the plugins that are defined through pluginManagement.</td></tr>
<tr class="b">
<td><a href="distribution-management.html">Distribution Management</a></td>
<td>This document provides informations on the distribution management of this project.</td></tr>
<tr class="a">
<td><a href="dependency-info.html">Dependency Information</a></td>
<td>This document describes how to to include this project as a dependency using various dependency management tools.</td></tr>
<tr class="b">
<td><a href="dependency-convergence.html">Dependency Convergence</a></td>
<td>This document presents the convergence of dependency versions across the entire project, and its sub modules.</td></tr>
<tr class="a">
<td><a href="source-repository.html">Source Repository</a></td>
<td>This is a link to the online source repository that can be viewed via a web browser.</td></tr>
<tr class="b">
<td><a href="mail-lists.html">Mailing Lists</a></td>
<td>This document provides subscription and archive information for this project's mailing lists.</td></tr>
<tr class="a">
<td><a href="issue-tracking.html">Issue Tracking</a></td>
<td>This is a link to the issue management system for this project. Issues (bugs, features, change requests) can be created and queried using this link.</td></tr>
<tr class="b">
<td><a href="integration.html">Continuous Integration</a></td>
<td>This is a link to the definitions of all continuous integration processes that builds and tests code on a frequent, regular basis.</td></tr>
<tr class="a">
<td><a href="plugins.html">Project Plugins</a></td>
<td>This document lists the build plugins and the report plugins used by this project.</td></tr>
<tr class="b">
<td><a href="license.html">Project License</a></td>
<td>This is a link to the definitions of project licenses.</td></tr>
<tr class="a">
<td><a href="dependency-management.html">Dependency Management</a></td>
<td>This document lists the dependencies that are defined through dependencyManagement.</td></tr>
<tr class="b">
<td><a href="team-list.html">Project Team</a></td>
<td>This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.</td></tr>
<tr class="a">
<td><a href="project-summary.html">Project Summary</a></td>
<td>This document lists other related information of this project</td></tr>
<tr class="b">
<td><a href="dependencies.html">Dependencies</a></td>
<td>This document lists the project's dependencies and provides information on each dependency.</td></tr></table></div></div>
                  </div>
            </div>
          </div>

    <hr/>

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

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