<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from target/generated-site/xdoc/set-version-mojo.xml at 2022-02-28
 | Rendered using Apache Maven Fluido Skin 1.10.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
    <title>Tycho Versions Plugin &#x2013; tycho-versions:set-version</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.10.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script src="./js/apache-maven-fluido-1.10.0.min.js"></script>
  </head>
  <body class="topBarDisabled">
    <div class="container-fluid">
      <header>
        <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: 2022-02-28<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 2.7.0</li>
          </ul>
        </div>
      </header>
      <div class="row-fluid">
        <header id="leftColumn" class="span2">
          <nav class="well sidebar-nav">
  <ul class="nav nav-list">
   <li class="nav-header">Tycho</li>
    <li><a href="../../index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../../target-platform-configuration/plugin-info.html" title="Target Platform Configuration"><span class="none"></span>Target Platform Configuration</a></li>
    <li><a href="../../tycho-compiler-plugin/plugin-info.html" title="Compiler Plugin"><span class="none"></span>Compiler Plugin</a></li>
    <li><a href="../../tycho-packaging-plugin/plugin-info.html" title="Packaging Plugin"><span class="none"></span>Packaging Plugin</a></li>
    <li><a href="../../tycho-surefire-plugin/plugin-info.html" title="Surefire Plugin"><span class="none"></span>Surefire Plugin</a></li>
    <li><a href="../../tycho-p2/tycho-p2-publisher-plugin/plugin-info.html" title="p2 Publisher Plugin"><span class="none"></span>p2 Publisher Plugin</a></li>
    <li><a href="../../tycho-p2/tycho-p2-repository-plugin/plugin-info.html" title="p2 Repository Plugin"><span class="none"></span>p2 Repository Plugin</a></li>
    <li><a href="../../tycho-p2/tycho-p2-director-plugin/plugin-info.html" title="p2 Director Plugin"><span class="none"></span>p2 Director Plugin</a></li>
    <li><a href="../../tycho-source-plugin/plugin-info.html" title="Source Plugin"><span class="none"></span>Source Plugin</a></li>
    <li><a href="../../tycho-release/tycho-versions-plugin/plugin-info.html" title="Versions Plugin"><span class="none"></span>Versions Plugin</a></li>
    <li><a href="../../tycho-pomgenerator-plugin/plugin-info.html" title="POM Generator Plugin"><span class="none"></span>POM Generator Plugin</a></li>
    <li><a href="" title="Properties"><span class="icon-chevron-down"></span>Properties</a>
     <ul class="nav nav-list">
      <li><a href="../../BuildProperties.html" title="Build Properties"><span class="none"></span>Build Properties</a></li>
      <li><a href="../../TychoProperties.html" title="Tycho Properties"><span class="none"></span>Tycho Properties</a></li>
     </ul></li>
   <li class="nav-header">Tycho Extras</li>
    <li><a href="../../tycho-extras/index.html" title="Introduction"><span class="none"></span>Introduction</a></li>
    <li><a href="../../tycho-extras/tycho-p2-extras-plugin/plugin-info.html" title="P2 Extras Plugin"><span class="none"></span>P2 Extras Plugin</a></li>
    <li><a href="../../tycho-extras/target-platform-validation-plugin/plugin-info.html" title="Target Platform Validation Plugin"><span class="none"></span>Target Platform Validation Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-eclipserun-plugin/plugin-info.html" title="Eclipserun Plugin"><span class="none"></span>Eclipserun Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-document-bundle-plugin/plugin-info.html" title="Document Bundle Plugin"><span class="none"></span>Document Bundle Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-source-feature-plugin/plugin-info.html" title="Source Feature Generation Plugin"><span class="none"></span>Source Feature Generation Plugin</a></li>
    <li><a href="../../tycho-extras/tycho-pack200/index.html" title="Pack200 Plugins"><span class="icon-chevron-down"></span>Pack200 Plugins</a>
     <ul class="nav nav-list">
      <li><a href="../../tycho-extras/tycho-pack200/tycho-pack200a-plugin/plugin-info.html" title="Normalization Plugin"><span class="none"></span>Normalization Plugin</a></li>
      <li><a href="../../tycho-extras/tycho-pack200/tycho-pack200b-plugin/plugin-info.html" title="Pack Plugin"><span class="none"></span>Pack Plugin</a></li>
     </ul></li>
  </ul>
          </nav>
          <div class="well sidebar-nav">
            <hr />
            <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>
        </header>
        <main id="bodyColumn"  class="span10" >

  
    <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:2.7.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 <code>eclipse-plugin</code> 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 <code>eclipse-plugin</code> that changed version will be updated: 

<ul>

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

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

<li>When an <code>eclipse-repository</code> 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>
        
<li>The goal is not marked as thread-safe and thus does not support parallel builds.</li>
      </ul>
      <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 align="left"><code><a href="#newVersion">&lt;newVersion&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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>: <code>newVersion</code>.<br /><b>Alias is</b>: <code>developmentVersion</code>.</td>
          </tr>
        </table>
      </section>
      <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 align="left"><code><a href="#artifacts">&lt;artifacts&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>-</code></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>: <code>${project.artifactId}</code>.<br /><b>User property is</b>: <code>artifacts</code>.<br /></td>
          </tr>
          
<tr class="a">
            
<td align="left"><code><a href="#properties">&lt;properties&gt;</a></code></td>
            
<td><code>String</code></td>
            
<td><code>0.18.0</code></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 <code>artifacts</code> parameter.</p><br /><b>User property is</b>: <code>properties</code>.<br /></td>
          </tr>
          
<tr class="b">
            
<td align="left"><code><a href="#updateVersionRangeMatchingBounds">&lt;updateVersionRangeMatchingBounds&gt;</a></code></td>
            
<td><code>boolean</code></td>
            
<td><code>-</code></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>: <code>false</code>.<br /><b>User property is</b>: <code>updateVersionRangeMatchingBounds</code>.<br /></td>
          </tr>
        </table>
      </section>
      <section>
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        <section>
<h4><a name="a.3Cartifacts.3E"></a><b><a name="artifacts">&lt;artifacts&gt;</a></b></h4>
        
<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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>artifacts</code></li>
          
<li><b>Default</b>: <code>${project.artifactId}</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CnewVersion.3E"></a><b><a name="newVersion">&lt;newVersion&gt;</a></b></h4>
        
<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>: <code>java.lang.String</code></li>
          
<li><b>Required</b>: <code>Yes</code></li>
          
<li><b>User Property</b>: <code>newVersion</code></li>
          
<li><b>Alias</b>: <code>developmentVersion</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3Cproperties.3E"></a><b><a name="properties">&lt;properties&gt;</a></b></h4>
        
<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 <code>artifacts</code> parameter.</p></div>
        
<ul>
          
<li><b>Type</b>: <code>java.lang.String</code></li>
          
<li><b>Since</b>: <code>0.18.0</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>properties</code></li>
        </ul><hr /></section><section>
<h4><a name="a.3CupdateVersionRangeMatchingBounds.3E"></a><b><a name="updateVersionRangeMatchingBounds">&lt;updateVersionRangeMatchingBounds&gt;</a></b></h4>
        
<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>: <code>boolean</code></li>
          
<li><b>Required</b>: <code>No</code></li>
          
<li><b>User Property</b>: <code>updateVersionRangeMatchingBounds</code></li>
          
<li><b>Default</b>: <code>false</code></li>
        </ul>
      </section></section>
    </section>
  

        </main>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>&#169;      2008&#x2013;2022
<a href="http://www.eclipse.org/">Eclipse Foundation</a>
</p>
        </div>
      </div>
    </footer>
<script>
	if(anchors) {
	  anchors.add();
	}
</script>
  </body>
</html>
