<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.    
-->
<html>
<head>
	<script type="text/javascript">var xookiConfig = {level: 0};</script>	
	<script type="text/javascript" src="xooki/xooki.js"></script>
</head>
<body>
    <textarea id="xooki-source">
<ol>
    <li><a href="#annoucement">Release Annoucement</a></li>
    <li><a href="#what">What is Apache IvyDE?</a></li>
    <li><a href="#status">Status of this release</a></li>
    <li><a href="#majorchanges">Major Changes in this Release</a></li>
    <li><a href="#contrib">Committers and Contributors for this Release</a></li>
    <li><a href="#changes">List of Changes in this Release</a></li>
</ol>

<h1><a name="annoucement"></a>Release Annoucement</h1>

<tt>
The Apache IvyDE project is pleased to announce its 2.2.0 beta1 release.

The Apache IvyDE Eclipse plugin integrates Apache Ivy's dependency management into Eclipse. It lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management. Apache IvyDE will contribute to the classpath of your Java project or you can make it retrieve your dependencies directly into your project. Last but not least Apache IvyDE offer editors of ivy.xml and ivysettings.xml files with completion. Get some preview here: http://ant.apache.org/ivy/ivyde/screenshots.html

Major changes in this release:
* a synchronous resolve job has been introduced to take into account projet's inter dependencies and avoid too many workspace build,
* resolved classpath can now be based on retrieved artifacts,
* IvyDE retrieve feature can now be use on non Java projets

Compatibility:
* this release is expected to work with every version of Ivy 2.1 or superior
* as for this release and the next ones, IvyDE now expects to be installed in Eclipse 3.4 or superior.
* the Eclipse updatesite has been upgrade and now only supports Eclipse 3.5 or superior. Eclipse 3.4 users can still install it manually.

This release is considered as beta since the important changes in IvyDE resolve feature. We encourage our early users to test it and report us any issue they found.

A more detailed release notes can be read there:
http://ant.apache.org/ivy/ivyde/history/latest-milestone/release-notes.html

Issues should be reported to:
https://issues.apache.org/jira/browse/IVYDE

Download the 2.2.0 beta release at:
http://ant.apache.org/ivy/ivyde/download.cgi

Or use directly the Apache IvyDE's updatesite:
http://www.apache.org/dist/ant/ivyde/updatesite

More information can be found on the Apache IvyDE website:
http://ant.apache.org/ivy/ivyde/
</tt>

<h1><a name="what"></a>What is Apache IvyDE?</h1>

Apache IvyDE is the Eclipse plugin which integrates Apache Ivy's dependency management into Eclipse&#153;.

Apache IvyDE lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management. Apache IvyDE will contribute to the classpath of your Java project or you can make it retrieve your dependencies directly into your project. Last but not least Apache IvyDE offer editors of ivy.xml and ivysettings.xml files with completion. Get some preview here: http://ant.apache.org/ivy/ivyde/screenshots.html.

<h1><a name="status"></a>Status of this release</h1>

This release contains sevral major improvements along with some bug fixes. The major
improvements are about the resolve scheduler and how retrieved artifact are handled.
Thus this release is considered as a beta one.

<h1><a name="majorchanges"></a>Major Changes in this Release</h1>

As for this release and the next ones, Apache IvyDE now expects to be installed in Eclipse 3.4 or superior.

Apache IvyDE has now a synchronous job to launch resolve of dependencies on the projets. So
IvyDE will be able to order the resolve of the projects in the correct order regarding
their inter dependencies. And the immediate effect is that Eclipse get notified only
one time of a classpath change, and thus triggerin only one wrokspace build.

Apache IvyDE is now capable of having a classpath based on retrieved artifact rather than
on the cached ones.

The existing retrieve configuration are now considered "standonale" ones, as they
are independant of the classpath container. They can even now be part of non Java
project.

<h1><a name="contrib"></a>Committers and Contributors for this Release</h1>

Here is the list of people who have contributed source code and documentation
to this release. Many thanks to all of them, and also to the whole IvyDE community
contributing ideas and feedback, and promoting the use of Apache IvyDE. The list would be too
long, but Apache IvyDE couldn't be what it is without you!

<ul>Committers
<li>Maarten Coene</li>
<li>Xavier Hanin</li>
<li>Nicolas Lalev&eacute;e</li>
<li>Jon Schneider</li>
<li>Gilles Scokart</li>
</ul>
<ul>Contributors:
<li>Clint Burghduff</li>
<li>Gregory Fernandez</li>
<li>Jeffrey M. Metcalf</li>
</ul>

<h1><a name="changes"></a>List of Changes in this Release</h1>

List of changes since <a href="/ivy/ivyde/history/2.1.0/release-notes.html">Apache IvyDE 2.1.0</a>:
<ul>
    <li>NEW: Custom color in XML editors (IVYDE-73)</li>
    <li>NEW: support for retrieve configuration in non Java project</li>
    <li>NEW: an IvyDE classpath can now be retrieved (IVYDE-56)</li>
    <li>NEW: Add branch comparison to workspace resolver (IVYDE-234) (thanks to Jeffrey M. Metcalf)</li>
    <li>NEW: Look for ivysettings.xml file in project root copying the behavior of ivy ant task (IVYDE-258)</li>
    <li>NEW: IvyDE can now resolve in an offline mode, where Ivy use only the caches (Ivy 2.3 required)</li>
    <li>NEW: Explicit ordering of configurations (IVYDE-159)</li>
    <li>NEW: Open the ivy file on the double click in the reverse dependency explorer</li>
    <li>NEW: The ivysettings field editor now supports the variable ${ivyproject_loc} which is referencing the current project being resolved (IVYDE-247)</li>
    <li>NEW: Resolve error popups can now be avoided (IVYDE-268)</li>
    <li>NEW: Add configuration option to use an extended revision id when resolving eclipse projects (IVYDE-235) (thanks to Jeffrey M. Metcalf)</li>
    <li>NEW: Allow specifying source and javadoc mapping on binaries directly in the ivy.xml (IVYDE-267)</li>
    <li>NEW: Ivy Resolve Visualizer (IVYDE-208)</li>
    <li>NEW: "clean caches" operations have now a confirm popup (IVYDE-289)</li>
</ul><ul>
    <li>IMPROVE: let IvyDE refresh workspace after a resolve (IVYDE-27) (thanks to Clint Burghduff)</li>
    <li>IMPROVE: IvyDE now resolve by batch, then preventing too many workspace build (IVYDE-177)</li>
    <li>IMPROVE: Shared Javadoc/Source attachments (IVYDE-230) (thanks to Gregory Fernandez)</li>
    <li>IMPROVE: WorkspaceResolver: deal with self-dependencies (IVYDE-240)</li>
    <li>IMPROVE: Impossible to resolve dependencies: missing diagnostics (IVYDE-233)</li>
</ul><ul>
    <li>FIX: Variable based path for ivysettings doesn't work it there are some spaces in the path (IVYDE-253)</li>
    <li>FIX: Triggers are not called (IVYDE-244)</li>
    <li>FIX: Missing ivysettings.xml can make the classpath container config to change (IVYDE-248)</li>
    <li>FIX: Multiple eclipse projects with similar ivy library definitions results in launch config source path collisions (IVYDE-237)</li>
    <li>FIX: NPE when starting the IvyPlugin (IVYDE-269)</li>
    <li>FIX: IvyDE deletes entirely a project if the retrieve pattern resolved to be the root of the project (IVYDE-272)</li>
    <li>FIX: java.lang.StackOverflowError on Ivy>Resolve of a pom.xml with a parent and the workspace resolver (IVYDE-273)</li>
    <li>FIX: ivy.xsd bundled with IvyDE appears to be incorrect (IVYDE-297)</li>
</ul>

Most of our changes are logged in our JIRA, where you can find comments and links to our subversion:
https://issues.apache.org/jira/browse/ivyde

</textarea>
<script type="text/javascript">xooki.postProcess();</script>
</body>
</html>
