<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2018-06-05
 | 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="20180605" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Tycho Versions Plugin &#x2013; tycho-versions:set-version</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 Versions 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-06-05</li>
                  <li class="divider">|</li> <li id="projectVersion">Version: 1.2.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-versions:set-version"></a>tycho-versions:set-version</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.eclipse.tycho:tycho-versions-plugin:1.2.0:set-version</p>
      
<p><b>Description</b>:</p>
      
<div>
<p>Sets the version of the current project and child projects with
the same version, and updates references as necessary.</p>

<p>The set-version goal implements a version refactoring for a
Tycho reactor: When updating the version of a project, it
consistently updates the version strings in the project's
configuration files (e.g. pom.xml and META-INF/MANIFEST.MF) and all
references to that project (e.g. in a feature.xml).</p>

<p>In many cases, the set-version goal changes the version of
multiple projects or entities at once. In addition to the current
project, child projects with the same version are also changed. The
set of version changes is determined according to the following
rules:</p>

<ul>

<li>When the parent project of a project is changed and the project
has the same version as the parent project, the project is also
changed.</li>

<li>When an <tt>eclipse-plugin</tt> project is changed and the
plugin exports a package with a version which is the same as the
unqualified project version, the version of the package is also
changed.</li>

<li>Require-Bundle and Fragment-Host Version Range in references to
an <tt>eclipse-plugin</tt> that changed version will be updated: 

<ul>

<li>if the newVersion becomes out of the original VersionRange</li>

<li>or if <tt>updateVersionRangeMatchingBounds</tt> is true and
one of the bounds is matching the original version</li>
</ul>
</li>

<li>When an <tt>eclipse-repository</tt> project is changed and a
product file in the project has an equivalent version, the version
in the product file is also changed.</li>
</ul></div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Executes as an aggregator plugin.</li>
        
<li>Executes by direct invocation only.</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="#newVersion">newVersion</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>The new version to set to the current project and other entities
which have the same version as the current project.</p><br /><b>User property is</b>: <tt>newVersion</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="#artifacts">artifacts</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>Initial list of of projects to be changed. From these projects,
the full list of projects to be changed is derived according to the
rules described above. If set, this parameter needs to be specified
as a comma separated list of artifactIds.</p><br /><b>Default value is</b>: <tt>${project.artifactId}</tt>.<br /><b>User property is</b>: <tt>artifacts</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#properties">properties</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>0.18.0</tt></td>
            
<td>
<p>Comma separated list of names of POM properties to set the new
version to. Note that properties are only changed in the projects
explicitly listed by the <tt>artifacts</tt> parameter.</p><br /><b>User property is</b>: <tt>properties</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#updateVersionRangeMatchingBounds">updateVersionRangeMatchingBounds</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>
<p>When true bounds of OSGI version ranges referencing the version
of an element that changed version will be updated to match the
newVersion.</p><br /><b>Default value is</b>: <tt>false</tt>.<br /><b>User property is</b>: <tt>updateVersionRangeMatchingBounds</tt>.</td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="artifacts">artifacts</a>:</b></p>
        
<div>
<p>Initial list of of projects to be changed. From these projects,
the full list of projects to be changed is derived according to the
rules described above. If set, this parameter needs to be specified
as a comma separated list of artifactIds.</p></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>artifacts</tt></li>
          
<li><b>Default</b>: <tt>${project.artifactId}</tt></li>
        </ul><hr />
<p><b><a name="newVersion">newVersion</a>:</b></p>
        
<div>
<p>The new version to set to the current project and other entities
which have the same version as the current project.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>User Property</b>: <tt>newVersion</tt></li>
        </ul><hr />
<p><b><a name="properties">properties</a>:</b></p>
        
<div>
<p>Comma separated list of names of POM properties to set the new
version to. Note that properties are only changed in the projects
explicitly listed by the <tt>artifacts</tt> parameter.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Since</b>: <tt>0.18.0</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>properties</tt></li>
        </ul><hr />
<p><b><a name="updateVersionRangeMatchingBounds">updateVersionRangeMatchingBounds</a>:</b></p>
        
<div>
<p>When true bounds of OSGI version ranges referencing the version
of an element that changed version will be updated to match the
newVersion.</p></div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>User Property</b>: <tt>updateVersionRangeMatchingBounds</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul>
      </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>
