	                      Apache IvyDE v2.0.0 final
                               Release Notes
   -----------------------------------------------------------------------

CONTENTS
1. What is Apache IvyDE?
2. Status of this release
3. Major Changes in this Release
4. Committers and Contributors for this release
5. List of Changes in this Release   


1. What is Apache IvyDE?

IvyDE is the plugin which integrate Ivy into Eclipse.

IvyDE lets you manage your dependencies declared in an ivy.xml in your Java
Eclipse projects. 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 IvyDE offer editors of ivy.xml and ivysettings.xml files with completion.

2. Status of this release 

This is the first release considered as stable since the project as been hosted
by the Apache Software Foundation.

3. Major Changes in this Release

The "resolve in workspace" feature (make IvyDE search for Ivy dependencies
directly into the Eclipse projects) has been introduced in the last release
but was quite experimental. It has been refactored to be more reliable and
have been reported to be working like a charm by some of the IvyDE early users.

The IvyDE user documentation is now available directly into the Eclipse help center.

IvyDE can now load property files along with the Ivy settings.

4. Committers and Contributors for this Release

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 IvyDE. The list would be too
long, but IvyDE couldn't be what it is without you!

 Committers
    Maarten Coene
    Xavier Hanin
    Nicolas Lalevee
    Gilles Scokart

 Contributors
    Daniel Becheanu
    Eugene Goldfarb
    Will Gorman
    Marko Niemi

For the list of people who have contributed since IvyDE inception, see CHANGES.txt file.

5. List of Changes in this Release

For a full release history of IvyDE see the file CHANGES.txt

For details about the following changes, check our JIRA install at 
https://issues.apache.org/jira/browse/ivyde

List of changes since IvyDE 2.0.0-beta1:

- NEW: Add the IvyDE documentation to the Eclipse help (IVYDE-150)
- NEW: Export IVY_HOME as a classpath variable (IVYDE-141)
- NEW: Support variables in ivyconf.xml (IVYDE-13) (thanks to Will Gorman)
- NEW: Allow to manually reload the settings (IVYDE-26)
- NEW: Allow to not trigger full resolve at startup (IVYDE-74)

- IMPROVE: Split the global configuration panel into sevral ones (IVYDE-151)
- IMPROVE: Add ivy.xsd to ivy.xml template (IVYDE-165) (thanks to Marko Niemi)
- IMPROVE: Better support the resolve in workspace feature (IVYDE-153) (thanks to Eugene Goldfarb)

- FIX: When migrating from ivyde alpha to ivyde beta eclipse is throwing NPE at startup (IVYDE-136) (thanks to Daniel Becheanu)
- FIX: The retrieve configuration doesn't support '*' as accepted types (IVYDE-137) (thanks to Daniel Becheanu)
- FIX: NPE when a project:/// path is used and path does not exist (IVYDE-144)
- FIX: project://[projectname]/ scheme for settings only work with java projects, not simple projects (IVYDE-145)
- FIX: source and javadoc attachment regression (IVYDE-146)
- FIX: IvyDE does not save "Configurations" and "Types" field values for "Retrive" tab  (IVYDE-142) (thanks to Daniel Becheanu)
- FIX: Retrieve after resolve task fails because of wrong resolve configuration (IVYDE-140) (thanks to Daniel Becheanu)
- FIX: Conversion from "file:" to "project:" fails (IVYDE-143) (thanks to Will Gorman)
- FIX: The decorators can throw a NPE at startup (IVYDE-133)
- FIX: Changing any setting for the classpath container loses the "exported" setting of the classpath container (IVYDE-149)
- FIX: IvyConsole:java.io.IOException: Output Stream is closed (IVYDE-130)
- FIX: "Delete old retrieved artifacts" gets grayed out after OK'ing the dialog (IVYDE-155)
- FIX: REGRESSION: Resolving does no longer respect configurations (IVYDE-161)
- FIX: Parsing ivy file fails in IvyDE while it succeeds in Ant (IVYDE-35)
- FIX: Sources attach but Javadocs don't (IVYDE-166)
- FIX: Branch in repository pattern and defaultBranch (IVYDE-168)
- FIX: The resolve in workspace is being evicted by transitive dependencies (IVYDE-169)
- FIX: Error messages when setting path to ivy settings file covers what is being typed in (IVYDE-172)
- FIX: ResolveAllAction does not resolve multiple IvyDE containers in a single project (IVYDE-175)
- FIX: The sources/javadocs are not added for dependencies which don't have a fixed revision (IVYDE-174)
- FIX: Refresh action is detaching javadoc and sources (IVYDE-176)
- FIX: Add Ivy Library command adds classpath container even though it already exists (IVYDE-164)
- FIX: Importing a project with Ivy configured with an embedded ivysettings fails (IVYDE-181)
- FIX: Importing a project with Ivy fails if properties files are specified in settings (IVYDE-182)
- FIX: IvyDE does not set javadoc archive path properly (IVYDE-179)

