<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-12-17
 | 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="20181217" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho POM Generator Plugin &#x2013; tycho-pomgenerator:generate-poms</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">
                                <div id="bannerLeft">
                <h2>Tycho POM Generator Plugin</h2>
                </div>
                      </div>
        <div class="pull-right">  </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                  <li id="publishDate">Last Published: 2018-12-17</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.3.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">Tycho</li>
                                
      <li>
    
                          <a href="../index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin">
          <i class="none"></i>
        Compiler Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin">
          <i class="none"></i>
        Packaging Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../BuildProperties.html" title="Build Properties">
          <i class="none"></i>
        Build Properties</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-surefire/tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin">
          <i class="none"></i>
        Surefire Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin">
          <i class="none"></i>
        p2 Publisher Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin">
          <i class="none"></i>
        p2 Repository Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin">
          <i class="none"></i>
        p2 Director Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-source-plugin/plugin-info.html" title="Source Plugin">
          <i class="none"></i>
        Source Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin">
          <i class="none"></i>
        Versions Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin">
          <i class="none"></i>
        POM Generator Plugin</a>
            </li>
                  
      <li>
    
                          <a href="../TychoProperties.html" title="Tycho Properties">
          <i class="none"></i>
        Tycho Properties</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="tycho-pomgenerator:generate-poms"></a>tycho-pomgenerator:generate-poms</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-pomgenerator-plugin:1.3.0:generate-poms</p>
      
<p><b>Description</b>:</p>
      
<div>Traverse the current directory to find eclipse-plugin/bundle,
feature, update site (site.xml) or p2 repository (category.xml)
projects and generate corresponding pom.xml's. This goal is
intended to be used by existing projects for generating quick-start
pom.xml's when converting their build to Tycho. The generated
pom.xml's are only intended as a starting point and will most
probably require manual refinement. Note that this goal is not
intended for automatic pom.xml generation during build.</div>
      
<p><b>Attributes</b>:</p>
      
<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><tt><a href="#baseDir">&lt;baseDir&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The base directory which will be traversed recursively when
searching for projects.<br /><b>Default value is</b>: <tt>${basedir}</tt>.<br /><b>User property is</b>: <tt>baseDir</tt>.<br /></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><tt><a href="#aggregator">&lt;aggregator&gt;</a></tt></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>If true (the default), additional aggregator poma.xml pom file will
be generated for update site projects. This poma.xml file can be
used to build update site and all its dependencies.<br /><b>Default value is</b>: <tt>true</tt>.<br /><b>User property is</b>: <tt>aggregator</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#executionEnvironment">&lt;executionEnvironment&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>(no description)<br /><b>Default value is</b>: <tt>J2SE-1.5</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#extraDirs">&lt;extraDirs&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Additional directories to be traversed recursively when searching
for projects.<br /><b>User property is</b>: <tt>extraDirs</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#groupId">&lt;groupId&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Maven groupId to be used in the generated pom.xml files.<br /><b>User property is</b>: <tt>groupId</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#rootProjects">&lt;rootProjects&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of root project folders. If specified,
generated pom.xml files will only include root projects and
projects directly and indirectly referenced by the root projects.<br /><b>User property is</b>: <tt>rootProjects</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#templatesDir">&lt;templatesDir&gt;</a></tt></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>Location of directory with template pom.xml file. pom.xml templates
will be looked at this directory first, default templates will be
used if template directory and the template itself does not exist.
See src/main/resources/templates for the list of supported template
files.<br /><b>Default value is</b>: <tt>${basedir}/pom-templates</tt>.<br /><b>User property is</b>: <tt>templatesDir</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#testSuffix">&lt;testSuffix&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Suffix used to determine test bundles to add to update site
aggregator pom.<br /><b>Default value is</b>: <tt>.tests</tt>.<br /><b>User property is</b>: <tt>testSuffix</tt>.<br /></td>
          </tr>
          
<tr class="a">
            
<td><tt><a href="#testSuite">&lt;testSuite&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Bundle-SymbolicName of the test suite, a special bundle that knows
how to locate and execute all relevant tests.<br /><b>User property is</b>: <tt>testSuite</tt>.<br /></td>
          </tr>
          
<tr class="b">
            
<td><tt><a href="#version">&lt;version&gt;</a></tt></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Maven version to be used in the generated pom.xml files (applies to
parent pom and eclipse-repository/eclipse-update-site only).<br /><b>Default value is</b>: <tt>0.0.1-SNAPSHOT</tt>.<br /><b>User property is</b>: <tt>version</tt>.<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<div class="section">
<h4><a name="aaggregator"></a><b><a name="aggregator">&lt;aggregator&gt;</a></b></h4>
        
<div>If true (the default), additional aggregator poma.xml pom file will
be generated for update site projects. This poma.xml file can be
used to build update site and all its dependencies.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>aggregator</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="abaseDir"></a><b><a name="baseDir">&lt;baseDir&gt;</a></b></h4>
        
<div>The base directory which will be traversed recursively when
searching for projects.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>baseDir</tt></li>
          
<li><b>Default</b>: <tt>${basedir}</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aexecutionEnvironment"></a><b><a name="executionEnvironment">&lt;executionEnvironment&gt;</a></b></h4>
        
<div>(no description)</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>J2SE-1.5</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aextraDirs"></a><b><a name="extraDirs">&lt;extraDirs&gt;</a></b></h4>
        
<div>Additional directories to be traversed recursively when searching
for projects.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>extraDirs</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="agroupId"></a><b><a name="groupId">&lt;groupId&gt;</a></b></h4>
        
<div>Maven groupId to be used in the generated pom.xml files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>groupId</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="arootProjects"></a><b><a name="rootProjects">&lt;rootProjects&gt;</a></b></h4>
        
<div>Comma separated list of root project folders. If specified,
generated pom.xml files will only include root projects and
projects directly and indirectly referenced by the root projects.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>rootProjects</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atemplatesDir"></a><b><a name="templatesDir">&lt;templatesDir&gt;</a></b></h4>
        
<div>Location of directory with template pom.xml file. pom.xml templates
will be looked at this directory first, default templates will be
used if template directory and the template itself does not exist.
See src/main/resources/templates for the list of supported template
files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>templatesDir</tt></li>
          
<li><b>Default</b>: <tt>${basedir}/pom-templates</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestSuffix"></a><b><a name="testSuffix">&lt;testSuffix&gt;</a></b></h4>
        
<div>Suffix used to determine test bundles to add to update site
aggregator pom.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>testSuffix</tt></li>
          
<li><b>Default</b>: <tt>.tests</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="atestSuite"></a><b><a name="testSuite">&lt;testSuite&gt;</a></b></h4>
        
<div>Bundle-SymbolicName of the test suite, a special bundle that knows
how to locate and execute all relevant tests.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>testSuite</tt></li>
        </ul><hr /></div>
<div class="section">
<h4><a name="aversion"></a><b><a name="version">&lt;version&gt;</a></b></h4>
        
<div>Maven version to be used in the generated pom.xml files (applies to
parent pom and eclipse-repository/eclipse-update-site only).</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>version</tt></li>
          
<li><b>Default</b>: <tt>0.0.1-SNAPSHOT</tt></li>
        </ul>
      </div></div>
    </div>
  

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

    <hr/>

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

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