2.0.0-alpha-1


Disclaimer

Apache Ivy is an effort undergoing incubation at The Apache Software
Foundation (ASF). Incubation is required of all newly accepted projects
until a further review indicates that the infrastructure, communications,
and decision making process have stabilized in a manner consistent with
other successful ASF projects. While incubation status is not necessarily
a reflection of the completeness or stability of the code, it does
indicate that the project has yet to be fully endorsed by the ASF.

Announcement

April 26 2007 - The Ivy incubator project is please to announce its
2.0.0 alpha 1 release, exactly two years after Ivy 1.0!

Ivy is a tool for managing (recording, tracking, resolving and
reporting) project dependencies, characterized by flexibility,
configurability, and tight integration with Apache Ant.

This is the first release of Ivy in the Apache incubator, and as an
alpha version we do not guarantee any stability, that API and features
are still likely to change until final 2.0.0 version. Still we encourage
the use of this version for early testing.

This version focus was to refactor the code to get better readability,
rename packages to org.apache.ivy, improve maven 2 compatibility along
with some other bug fixes and improvement.

Download the 2.0.0 alpha 1 release files at:
http://incubator.apache.org/ivy/download.html

More information can be found on the Ivy website -
http://incubator.apache.org/ivy/

regards,
Xavier Hanin (2.0.0-alpha-1 release mgr)

Release Notes

CONTENTS
1. What is Apache Ivy?
2. Status of this release
3. Major Changes in this Release
4. Migrating from Jayasoft Ivy to Apache Ivy
5. How to Get Involved
6. How to Report Issues
7. Committers and Contributors for this release
8. List of Changes in this Release


1. What is Apache Ivy?

Apache Ivy is a tool for managing (recording, tracking, resolving and reporting) project dependencies.
It is characterized by the following:

1. flexibility and configurability
Apache Ivy is essentially process agnostic and is not tied to any methodology or structure.
Instead it provides the necessary flexibility and configurability to be adapted to a broad range of dependency management and build processes.

2. tight integration with Apache Ant
while available as a standalone tool, Apache Ivy works particularly well with Apache Ant providing a number of powerful Ant tasks ranging from dependency resolution to dependency reporting and publication.

2. Status of this release

This release of Apache Ivy is the first release within the Apache Incubator, and is labelled and should be considered as an alpha version.

This means that we do not guarantee any stability, that API and features are still likely to change until final 2.0.0 version. Still we encourage
the use of this version for early testing.

The current production quality version is still 1.4.1, which has not been produced within the Apache Software Foundation.

3. Major Changes in this Release

This section describes what has changed between version 1.4.1 and this version of Apache Ivy.

This new version of Apache Ivy is fully compatible with previous versions as long as you do not use custom plugins: Ivy API has changed, but not its behavior:

Some tasks and configuration elements have been renamed, but the old versions
are still available, they are only deprecated (you will see deprecated warnings).

3.1. Java Package Name Changes

All of the Ivy Java package names have changed in Apache Ivy. They now start
with org.apache rather than fr.jayasoft. There have been other changes as well.
Important refactorings have done on the source code to ease the understanding
of Ivy internal architecture by new developers.

A class named org.apache.ivy.Ivy14 is provided with an API compatible with the
fr.jayasoft.Ivy class of Ivy 1.4.1, to ease migration to this new version.

3.2. Configuration replaced by Settings

Configuration used to have two meanings in prior Ivy versions, causing some confusion with new users.
To avoid this confusion, Apache Ivy calls settings instead of configuration the files used to customize Ivy. Configuration is still used for module configurations.

Besides the changes in the documentation, this renaming also imply a modification in settings files, which now use ivysettings as root element instead of ivyconf, and settings instead of conf element to define top level defaults (such as defaultCache, ...).
Previous names have been deprecated, so previous settings files can still be used, but you will see a deprecation warning.

3.3. public resolver in default settings is now ibiblio in m2 compatible mode

In previous versions Ivy used to use the ivyrep resolver as default public resolver, but ivyrep is no longer maintained, while maven 2 repository on ibiblio is growing rapidly.

Since Ivy is compatible with maven 2 repository, defaulting to the ibiblio maven 2 repository makes more sense.

If you have any issue of backward compatibility with these new settings, you can simply set the following ant property before calling configure (implicitly or explicitly):
ivy.14.compatible=true

4. Migrating from Jayasoft Ivy to Apache Ivy

Apache Ivy is fully compatible with Jayasoft Ivy as long as you do not use
custom plugins.
This means that you can use Apache Ivy as a drop in replacement of Jayasoft Ivy.

However due to the the renaming of configuration files to settings files, we
strongly suggest to update your configuration files:
- rename the files called ivyconf*.xml in ivysettings*.xml
- rename 'ivyconf' element in 'ivysettings'
- rename 'conf' element of those settings file in 'settings'

Migrating custom plugins can be done by using the org.apache.ivy.Ivy14 class instead of fr.jayasoft.ivy.Ivy, and reorganizing your imports to reflect the changes in the package names.

5. How to Get Involved

The Apache Ivy project really needs and appreciates any contributions, including documentation help, source code and feedback. If you are interested in contributing, please visit http://incubator.apache.org/ivy/get-involved.html.

6. How to Report Issues

The Apache Ivy project uses JIRA for issue tracking. Please report any issues you find at http://issues.apache.org/jira/browse/IVY

7. 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 Ivy community contributing ideas and feedback, and promoting the use of Ivy. The list would be too long, but Ivy couldn't be what it is without you!

Committers

Maarten Coene
Xavier Hanin

Contributors

Stephane Baillez
Pierre Hägnestrand
Matt Inger
Costin Leau
William Lyvers
Gilles Scokart
John Williams

8. List of Changes in this Release

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

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

- TASK: refactor Ivy source code to improve readibility (IVY-434)

- NEW: define artifacts not declared by the dependency module descriptor (IVY-419)
- NEW: Module wide exclude (IVY-431)
- NEW: The default public resolver used is now ibiblio with m2 compatible mode (IVY-463)

- IMPROVE: OSGIfy ivy artifacts (IVY-464) (thanks to Costin Leau)
- IMPROVE: Let user specify Ivy file when using a post-resolve task (IVY-455)
- IMPROVE: IvyArtifactProperty and IvyArtifactReport tasks should be a post resolve task (IVY-452)
- IMPROVE: Rename ivy configuration in settings to remove ambiguity on configuration meaning (IVY-438)
- IMPROVE: Please typedef CacheResolver as "cache" for us (IVY-359)
- IMPROVE: ivy:retrieve should be able to create symlinks (IVY-353) (thanks to John Williams)
- IMPROVE: Ability to have multiple roots in the task (IVY-340) (thanks to Matt Inger)
- IMPROVE: Refactoring / documentation / test of matcher package (IVY-375) (thanks to Stephane Baillez)
- IMPROVE: Add a unit test to verify that latest.integration accepts released modules (IVY-394) (thanks to Gilles Scokart)
- IMPROVE: New "modules in use" section in console report at the end of resolve (IVY-373) (thanks to John Wiliams)
- IMPROVE: Generated XML reports now contains more information about the resolved module (IVY-446)

- FIX: ivy-retrieve failure when explicit absolute 'ivy.dep.file' path specified (IVY-396)
- FIX: IvyPostResolve Task doesn't reuse Ivy file of previous resolve (IVY-458)
- FIX: Ivy standalone is passing null args to main method when invoking with no args (IVY-457)
- FIX: Invalid error report with m2compatible resolver (IVY-456)
- FIX: IvyPostResolve Task doesn't use specified cache for the resolve (IVY-453)
- FIX: XmlModuleDescriptorWriterTest not working with Java 6 (IVY-374)
- FIX: Conflict managers ignored, when assigned to modules in Ivy configuration (setting, ivyconf.xml) (IVY-448)
- FIX: Ivy should fail if ';' has been used in publications/artifact/@conf of ivy.xml (IVY-441)
- FIX: Ivy should fail where dependency uses undefined configuration (IVY-442)
- FIX: Dynamic revision not calculated properly when using multiple directories (IVY-427)
- FIX: LatestRevisionStrategy.sort() doesn't sort as specified (IVY-435)
- FIX: setting m2compatible on ibiblio resolver overwrite root and pattern settings (IVY-437)
- FIX: ivy.revision property not set correctly for second resolve (IVY-429)
- FIX: NPE when no organisation or no name is provided in module element of ivyconf (IVY-422)
- FIX: FileUtil#copy(File src, File dest, CopyProgressListener l, boolean overwrite) (IVY-420)
- FIX: Invalid pom parsing when version is only declared in parent (IVY-436)
- FIX: ${project.groupId} and ${project.version} not processed correctly in poms (IVY-425)
- FIX: Incorrect pom parsing with profile (IVY-423)
- FIX: Ivy doesn't recognize maven2 classifiers (IVY-418)
- FIX: PomModuleDescriptorParser fails with nested profile dependency (IVY-392) (thanks to William Lyvers)
- FIX: Static revision replacement is not working when delivering an artifact with a dependency having extra attributes (IVY-415)
- FIX: Static revision replacement is not working when delivering an artifact with a dependency on a branch (IVY-404)
- FIX: latest-time conflict manager not working properly (IVY-407)
- FIX: LatestRevisionStrategy do not consider all dynamic revisions properly (IVY-383) (thanks to John Williams for the unit test)
- FIX: IOException during publish causes NullPointerException (IVY-371)
- FIX: Comments in ivy.xml duplicated (IVY-336) (thanks to Gilles Scokart)
- FIX: Ivy failure when the ivy.xml file contains non US-ASCII characters (IVY-346) (thanks to Gilles Scokart)
- FIX: Urlresolver is not possible to use dynamic revisions on nonstandard repository structure (IVY-350) (thanks to Pierre Hägnestrand)