	                      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 integrates 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 second release of IvyDE hosted by the Apache Software Foundation.

3. Major Changes in this Release

Several new features have been added to enhance the developer's experience developing on multi-module interdependent applications, 
including better support for the resolve in workspace feature, a new context menu in the package explorer, the Reverse Dependency Explorer.

The classpath container is now more tightly integrated its underlying ivy.xml resource and the launch configuration, and allows for more fine-grained 
user control of these behaviors.

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
    Jon Schneider

 Contributors
    Troy Gaines
    Miguel Griffa
    Adam Karl
    Ivica Loncar
    Sebastien Moran
    Phillip Webb

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-final:

- NEW: Inclusion of Ivy related schemas into the Eclipse XML Catalog (IVYDE-190) (thanks to Miguel Griffa)
- NEW: Add "Resolve Dependencies" extension to Java Project in the Package Explorer (IVYDE-153) (thanks to Jon Schneider and Troy Gaines)
- NEW: Add option to not launch a resolve after saving a file with the IvyEditor (IVYDE-197) (thanks to Jon Schneider)
- NEW: File resource listener on Ivy files launches resolve when it detects modifications (IVYDE-199) (thanks to Jon Schneider)
- NEW: Add an option in the container to automatically launch a resolve before each launch (IVYDE-204)
- NEW: "Reverse Dependency Explorer" View for synchronizing revisions across multiple projects in a workspace (IVYDE-195) (thanks to Jon Schneider)
- NEW: Make the Ivy console filter on the logging level (IVYDE-205)
- NEW: Support for Eclipse variables (IVYDE-152)

- IMPROVE: Wrap cache cleaning in a job so that it does not block the workspace (IVYDE-207) (thanks to Jon Schneider)
- IMPROVE: Allow workspace resolver to skip version matcher (IVYDE-187) (thanks to Phillip Webb)
- IMPROVE: Filter closed projects from workspace selection dialog (IVYDE-249) (thanks to Sebastien Moran)

- FIX: "Ivy Settings Path" Browse button results in an incorrectly formatted URL (IVYDE-191) (thanks to Jon Schneider)
- FIX: Workspace Resolver Prevents Source Download (IVYDE-188) (thanks to Phillip Webb)
- FIX: Resolve in Workspace fails to find projects under certain conditions (IVYDE-186) (thanks to Adam Karl)
- FIX: The gui wizard crash when adding a IvyDE Managed Dependencies library to a .launch file's classpath (IVYDE-200)
- FIX: Ivy Library removed from the list of Java EE Module Dependencies after changing its properties (IVYDE-178)
- FIX: Ivy Classpath Contributed to Dependent Projects When not Exported (IVYDE-193)
- FIX: Incorrect project:// path in the ivysettings configuration make the UI crash (IVYDE-203)
- FIX: conf attributes must not be null (IVYDE-209) (thanks to Ivica Loncar)
- FIX: Errors are not reported when multiple resolve are launched (IVYDE-219)
- FIX: Ivy settings file cannot be loaded via http url (IVYDE-218)
- FIX: The workspace resolver doesn't resolve conflicts correctly (IVYDE-212)
- FIX: dependency order not preserved causing failed builds (IVYDE-170)
- FIX: Can not add a project specific property file when adding a library (IVYDE-228)
- FIX: IvyDE fail on project close to trigger resolve on dependent project (IVYDE-229)
