Jump to: navigation, search

Difference between revisions of "Tycho/Release Notes/0.16"

m (minor fix in version nav CSS)
m (revert capitalization change and use smaller fonts instead)
(19 intermediate revisions by 4 users not shown)
Line 3: Line 3:
 
   #versionNav{ position:absolute; top: 0px; right: 0px; margin-right: 1em; font-size: 84%; line-height: 1.2em; color: rgb(125, 125, 125); }
 
   #versionNav{ position:absolute; top: 0px; right: 0px; margin-right: 1em; font-size: 84%; line-height: 1.2em; color: rgb(125, 125, 125); }
 
</css>
 
</css>
<div id="versionNav">[[Tycho/Release Notes/0.15|&lt; Previous Version]] | Next Version &gt;</div>
+
<div id="versionNav">[[Tycho/Release Notes/0.15|&lt; Previous Version]] | [[Tycho/Release Notes/0.17|Next Version &gt;]]</div>
  
Tycho 0.16.0 is currently in development. This page shows a preview of features which will be available in the 0.16.0 release.
+
== New and Noteworthy  ==
  
== SNAPSHOT builds  ==
+
[https://bugs.eclipse.org/bugs/buglist.cgi?classification=Technology&product=Tycho&query_format=advanced&resolution=FIXED&target_milestone=0.16.0&order=bug_id&query_based_on= Complete list of bug fixes and enhancements in 0.16.0]
  
To try the most recent snapshot build of 0.16.0, simply add the following snippet to your (parent) pom.xml and set tycho version to 0.16.0-SNAPSHOT.
+
==== Compiler ====
<pre>&lt;pluginRepositories&gt;
+
  &lt;pluginRepository&gt;
+
    &lt;id&gt;tycho-snapshots&lt;/id&gt;
+
    &lt;url&gt;https://oss.sonatype.org/content/groups/public/&lt;/url&gt;
+
  &lt;/pluginRepository&gt;
+
&lt;/pluginRepositories&gt;
+
</pre>
+
[https://bugs.eclipse.org/bugs/buglist.cgi?classification=Technology&product=Tycho&query_format=advanced&resolution=FIXED&target_milestone=0.16.0&order=bug_id&query_based_on= List of bug fixes and enhancements in 0.16.0]
+
  
== New and Noteworthy  ==
+
* <tt>tycho-compiler-plugin</tt> now has a boolean option <tt>[http://www.eclipse.org/tycho/sitedocs/tycho-compiler-plugin/compile-mojo.html#requireJREPackageImports requireJREPackageImports]</tt> which will fail the build if set to <tt>true</tt> and non-java.* packages provided by the JDK are not explicitly imported. <br/> This is the design-time equivalent of setting equinox runtime option <tt>[[Equinox Boot Delegation|osgi.compatibility.bootdelegation=false]]</tt>.
  
=== New Features  ===
+
==== Target Platform & Dependency Resolution ====
  
 
<ul>
 
<ul>
<li>Support for parallel test execution with JUnit &gt;= 4.7 has been added.<br>If you use Junit &gt;= 4.7, you can now have test classes or methods executed by several threads in parallel by adding <tt>-Dparallel=classes|methods|both</tt> on the commandline or by configuring<br>
+
<li>There is a new packaging type [[Tycho/Packaging Types#eclipse-target-definition|<tt>eclipse-target-definition</tt>]] for adding a PDE target definition file (<tt>*.target</tt>) to the build. In order to use the target file as [[Tycho/Target Platform|target platform]], add a reference to it in the [[Tycho/Target Platform#Target files|target platform configuration]].
<pre>&lt;plugin&gt;
+
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
+
  &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
+
  &lt;version&gt;${tycho-version}&lt;/version&gt;
+
  &lt;configuration&gt;
+
    &lt;parallel&gt;classes|methods|both&lt;/parallel&gt;
+
  &lt;/configuration&gt;
+
&lt;/plugin&gt;
+
</pre>
+
Executing tests in parallel can be useful e.g. if you have long-running integration tests which are not CPU-bound.<br> Under the hood, this feature was enabled by porting the junit4.7 surefire provider to Tycho.
+
 
</li>
 
</li>
 
+
<li>The new property [[Tycho/Target Platform#Locally built artifacts|<tt>tycho.localArtifacts</tt>]] allows to control whether artifacts installed in the local Maven repository by previous Tycho builds should be considered by the resolver or not. The property can be specified on the command line and in the settings.xml:
<li>[[Tycho/Reproducible Version Qualifiers|Reproducible Version Qualifiers]]
+
  <ul>
 +
    <li>If unset (or set to <tt>default</tt>), the behaviour is unchanged (local metadata is considered by the resolver, and there is a warning if locally built units were used)</li>
 +
    <li>If set to <tt>ignore</tt>, locally built artifact are ignored</li>
 +
  </ul>
 
</li>
 
</li>
 
+
<li>(INCOMPATIBLE CHANGE) The build now fails if one of the children of a composite p2 repository can't be loaded, e.g. because of a temporary network failure. Before, the build would have continued and may have passed, potentially producing a different build result.<br/>
<li> A new plugin to validate target platforms. This plugin takes as input one or several target platforms and ensures they can be resolved, fails otherwise
+
  <ul>
 +
    <li>Note that a composite p2 repository may still enforce the old behaviour by setting the repository property <tt>p2.atomic.composite.loading</tt> to <tt>false</tt>. Using these non-atomic composite p2 repositories in a production build is discouraged because they suffer from [https://bugs.eclipse.org/bugs/show_bug.cgi?id=356561 p2 bug 356561], which is threatening build reproducibility.</li>
 +
  </ul>
 +
</li>
 +
<li>Providing [[Tycho/Target Platform/Authentication and Mirrors#Credentials|credentials for a p2 repository]] specified in a target file is now more convenient – the use of the non-standard <tt>id</tt> attribute in target files is no longer necessary (<strike>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=377086 bug 377086]</strike>).
 +
</li>
 +
<li>Access to p2 repository can be [[Tycho/Target Platform/Authentication and Mirrors#Mirrors|redirected to a mirror location]]. This now works for both target files and repositories specified in the POM (<strike>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=356016 bug 356016]</strike>).
 +
</li>
 +
<li>There is now basic support for [[Tycho/Execution Environments|custom execution environment profiles]] (<strike>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=385930 bug 385930]</strike>)
 +
</li>
 +
<li>A new plugin to validate target platforms. This plugin takes as input one or several target platforms and ensures they can be resolved, fails otherwise
 
<source lang="xml">
 
<source lang="xml">
 
<plugin>
 
<plugin>
Line 66: Line 61:
 
</ul>
 
</ul>
  
=== Improvements and Fixes  ===
+
==== Test Execution ====
  
* If several tycho versions were inadvertently mixed within the same reactor, this could lead to cryptic errors like ClassCastExceptions. This situation is now detected early and the build will fail with a clear error message
+
<ul>
*Providing [[Tycho/Target Platform/Authentication and Mirrors#Credentials|credentials for a p2 repository]] specified in a target file is now more convenient – the use of the non-standard <tt>id</tt> attribute in target files is no longer necessary (<strike>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=377086 bug 377086]</strike>).  
+
<li>Support for parallel test execution with JUnit &gt;= 4.7 has been added.<br>If you use Junit &gt;= 4.7, you can now have test classes or methods executed by several threads in parallel by adding <tt>-Dparallel=classes|methods|both</tt> on the commandline or by configuring<br>
*Access to p2 repository can be [[Tycho/Target Platform/Authentication and Mirrors#Mirrors|redirected to a mirror location]]. This now works for both target files and repositories specified in the POM (<strike>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=356016 bug 356016]</strike>).
+
<pre>&lt;plugin&gt;
* <tt>tycho-compiler-plugin</tt> now has a boolean option <tt>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=384113 requireJREPackageImports]</tt> which will fail the build if set to <tt>true</tt> and packages provided by the JDK are not explicitly imported. <br/> This is the design-time equivalent of setting equinox runtime option <tt>[[Equinox Boot Delegation|osgi.compatibility.bootdelegation=false]]</tt>.
+
  &lt;groupId&gt;org.eclipse.tycho&lt;/groupId&gt;
*Support for test frameworks is extensible now. This means you can add support for test frameworks other than JUnit if you provide an implementation of [http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-surefire/tycho-surefire-plugin/src/main/java/org/eclipse/tycho/surefire/provider/spi/TestFrameworkProvider.java TestFrameworkProvider].
+
  &lt;artifactId&gt;tycho-surefire-plugin&lt;/artifactId&gt;
 +
  &lt;version&gt;${tycho-version}&lt;/version&gt;
 +
  &lt;configuration&gt;
 +
    &lt;parallel&gt;classes|methods|both&lt;/parallel&gt;
 +
  &lt;/configuration&gt;
 +
&lt;/plugin&gt;
 +
</pre>
 +
Executing tests in parallel can be useful e.g. if you have long-running integration tests which are not CPU-bound. Under the hood, this feature was enabled by porting the junit4.7 surefire provider to Tycho.
 +
</li>
 +
<li>Support for test frameworks is extensible now. This means you can add support for test frameworks other than JUnit if you provide an implementation of [http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-surefire/tycho-surefire-plugin/src/main/java/org/eclipse/tycho/surefire/provider/spi/TestFrameworkProvider.java TestFrameworkProvider].
 +
</li>
 +
</ul>
 +
 
 +
==== Packaging ====
 +
 
 +
* [[Tycho/Reproducible Version Qualifiers|Reproducible Version Qualifiers]]
 +
* Support for generating [http://git.eclipse.org/c/tycho/org.eclipse.tycho.extras.git/commit/?id=526be434a79a430efba50d4f54eb91ddaa6cf766 Eclipse-SourceReferences] MANIFEST headers for [[EGit/New and Noteworthy/2.0#Support_for_Eclipse-SourceReferences_manifest_headers| git]] has been added. Other SCMs can be plugged in by implementing [http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/packaging/sourceref/SourceReferencesProvider.java SourceReferencesProvider].
 
* The [http://www.eclipse.org/tycho/sitedocs/tycho-p2/tycho-p2-director-plugin/plugin-info.html tycho-p2-director-plugin] can now create product installations which have meta-requirements on the installer. This for example allows to execute custom touchpoint actions during the installation. See the [http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-its/projects/product.metaRequirements integration test] for an example.
 
* The [http://www.eclipse.org/tycho/sitedocs/tycho-p2/tycho-p2-director-plugin/plugin-info.html tycho-p2-director-plugin] can now create product installations which have meta-requirements on the installer. This for example allows to execute custom touchpoint actions during the installation. See the [http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-its/projects/product.metaRequirements integration test] for an example.
* Added a property <tt>"tycho.considerLocal"</tt> which allows to control whether artifacts installed in the local maven repository by previous tycho builds should be considered by the resolver or not. The property can be specified on the commandline and in settings.xml.
 
** if not set, behaviour is unchanged (local metadata is considered by the resolver, but warn if local-only IUs were used)
 
** if set to true, consider local metadata and do not warn  about usage of locally installed IUs
 
** if set to false, ignore local-only metadata
 
  
 +
==== Other ====
 +
 +
* If several tycho versions were inadvertently mixed within the same reactor, this could lead to cryptic errors like ClassCastExceptions. This situation is now detected early and the build will fail with a clear error message.
  
 
[[Category:Tycho|Release Notes/0.16]]
 
[[Category:Tycho|Release Notes/0.16]]

Revision as of 07:47, 10 April 2013

New and Noteworthy

Complete list of bug fixes and enhancements in 0.16.0

Compiler

Target Platform & Dependency Resolution

  • There is a new packaging type eclipse-target-definition for adding a PDE target definition file (*.target) to the build. In order to use the target file as target platform, add a reference to it in the target platform configuration.
  • The new property tycho.localArtifacts allows to control whether artifacts installed in the local Maven repository by previous Tycho builds should be considered by the resolver or not. The property can be specified on the command line and in the settings.xml:
    • If unset (or set to default), the behaviour is unchanged (local metadata is considered by the resolver, and there is a warning if locally built units were used)
    • If set to ignore, locally built artifact are ignored
  • (INCOMPATIBLE CHANGE) The build now fails if one of the children of a composite p2 repository can't be loaded, e.g. because of a temporary network failure. Before, the build would have continued and may have passed, potentially producing a different build result.
    • Note that a composite p2 repository may still enforce the old behaviour by setting the repository property p2.atomic.composite.loading to false. Using these non-atomic composite p2 repositories in a production build is discouraged because they suffer from p2 bug 356561, which is threatening build reproducibility.
  • Providing credentials for a p2 repository specified in a target file is now more convenient – the use of the non-standard id attribute in target files is no longer necessary (bug 377086).
  • Access to p2 repository can be redirected to a mirror location. This now works for both target files and repositories specified in the POM (bug 356016).
  • There is now basic support for custom execution environment profiles (bug 385930)
  • A new plugin to validate target platforms. This plugin takes as input one or several target platforms and ensures they can be resolved, fails otherwise
    <plugin>
       <groupId>org.eclipse.tycho.extras</groupId>
       <artifactId>target-platform-validation-plugin</artifactId>
       <version>${tychoExtrasVersion}</version>
       <executions>
          <execution>
             <phase>validate</phase>
             <goals>
                <goal>validate-target-platform</goal>
             </goals>
             <configuration>
                <targetFiles>
                   <param>indigo.target</param>
                   <param>juno.target</param>
                </targetFiles>
                <failOnError>true</failOnError>
             </configuration>
          </execution>
       </executions>
    </plugin>

Test Execution

  • Support for parallel test execution with JUnit >= 4.7 has been added.
    If you use Junit >= 4.7, you can now have test classes or methods executed by several threads in parallel by adding -Dparallel=classes|methods|both on the commandline or by configuring
    <plugin>
       <groupId>org.eclipse.tycho</groupId>
       <artifactId>tycho-surefire-plugin</artifactId>
       <version>${tycho-version}</version>
       <configuration>
         <parallel>classes|methods|both</parallel>
       </configuration>
    </plugin>
    

    Executing tests in parallel can be useful e.g. if you have long-running integration tests which are not CPU-bound. Under the hood, this feature was enabled by porting the junit4.7 surefire provider to Tycho.

  • Support for test frameworks is extensible now. This means you can add support for test frameworks other than JUnit if you provide an implementation of TestFrameworkProvider.

Packaging

Other

  • If several tycho versions were inadvertently mixed within the same reactor, this could lead to cryptic errors like ClassCastExceptions. This situation is now detected early and the build will fail with a clear error message.