blob: b4900439a16f8a59db1c7cdebaee5766e15a7291 [file] [log] [blame]
Apache Ivy v2.0.0-rc2
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 is the second release candidate of Ivy targetting 2.0.0.
As a release candidate version, we strongly encourage the use of this version for
testing and validation.
From now on, features are frozen until final 2.0.0 version, only bug fixes may be
applied before 2.0.0.
If no outstanding bugs are reported with this release candidate, it will promoted
to 2.0.0 about two weeks after this release candidate.
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 which may cause incompatibilities. For a full list of detailed changes,
please refer to CHANGES.txt file.
This new version of Apache Ivy is almost fully compatible with 1.4 version 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 loading the settings (implicitly or explicitly):
ivy.14.compatible=true
3.4. Relative paths resolution
Relative paths resolution in Ivy used to be resolved against the current directory.
In 2.0, relative path resolution is done like this:
* In an Ivy file, paths are relative to the Ivy file itself (the only possible path
in an Ivy file is for configurations declaration inclusion)
* In settings files, paths for file inclusion (namely properties file loading and
settings inclusion) are relative to the directory in which the settings file is
located. All other paths must be absolute unless explicitly noted.
* In Ivy Ant tasks and Ivy parameters or options, paths are relative to Ivy base
directory, which when called from Ant is the same as your Ant basedir.
This may break your dependency resolution if you used to use relative paths for configuration
file inclusion.
3.5 Ivyrep ivyroot attribute is now mandatory
If you still use the ivyrep resolver, you will need to provide an ivyroot.
To restore the previous behavior, use ivyroot="http://ivyrep.jayasoft.org/".
Since Ivyrep is not maintained anymore, we recommend moving away from this repository anyway.
3.6 alwaysCheckExactRevision now defaults to false
This property common to many resolvers is used to tell the resolver if the raw revision
should be tested even when the revision is dynamic. This is used in very few use cases,
so we decided to change the default to false.
If you want to set the default to true, set 'ivy.default.always.check.exact.revision' to
'true' before loading Ivy settings.
4. Migrating from Jayasoft Ivy to Apache Ivy
Besides what is stated in "3. Major Changes in this Release"
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
in most cases.
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'
We also suggest using the new org.apache.ivy.ant package name for the antlib declaration.
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://ant.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
Nicolas Lalevee
Gilles Scokart
Contributors
Scott Hebert
Phil Messenger
Randy Nott
Tom Widmer
Chris Wood
Patrick Woodworth
Jaroslaw Wypychowski
For the list of people who have contributed since Ivy inception, see CHANGES.txt file.
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
List of changes since Ivy 2.0.0-rc1:
- NEW: Allow authentication credentials to be specified in settings file (IVY-943) (thanks to Randy Nott)
- IMPROVEMENT: Error messages on use of relative paths can be cyrptic (IVY-909)
- IMPROVEMENT: Maven accepts illegal XML for its pom's, Ivy not (IVY-921)
- IMPROVEMENT: Ivy should set the ${basedir} property (IVY-953)
- FIX: NullPointerException in AbstractPatternsBasedResolver when organization is null (IVY-928)
- FIX: NullPointerException when Ivy cannot locate pom parent (IVY-927)
- FIX: Cannot configure items with java.io.File attributes (IVY-905)
- FIX: Environment properties in ivy settings are no longer resolved (IVY-907)
- FIX: Resolve failed on certain proxy environment (IVY-911)
- FIX: Ivy can't handle bare POM ${groupId} property (IVY-913) (thanks to Tom Widmer)
- FIX: Properties needed to parse version in POM (IVY-914) (thanks to Tom Widmer)
- FIX: build.xml: checkstyle + checkstyle-report dont work together (IVY-919)
- FIX: Maven packaging of "pom" should add a "jar" artifact if present (IVY-920)
- FIX: StackOverflow when using ivy:settings with "ivy.instance" as id (IVY-924)
- FIX: Maven Pom reader doesn't handle optional dependencies correctly in some instances (IVY-926) (thanks to Phil Messenger)
- FIX: ivy:settings doesn't work if id is a property (IVY-925)
- FIX: HttpClientHandler hanging in certain cases (IVY-930) (thanks to Scott Hebert)
- FIX: Can't download files containing space or + in their names by HTTP (IVY-923)
- FIX: Maven2 parser doesn't support POMs with <model> as root (IVY-932)
- FIX: Default retrieve, publish and deliver patterns doesn't include the [classifier] token (IVY-935)
- FIX: Can't use latest.release for pom dependencies (IVY-936)
- FIX: Unable to resolve snapshot versions depending on xml elements order (IVY-940)
- FIX: pre-resolve-dependency event doesn't export branch information (IVY-941) (thanks to Jaroslaw Wypychowski)
- FIX: cachefileset produces an empty fileset when the cache refers to libs in directories that only have the root directory in common (IVY-948) (thanks to Chris Wood)
- FIX: Extra Attributes specified in the Dependency's Module Descriptor are not available to resolvers (IVY-929) (thanks to Scott Hebert)
- FIX: Support for passing arbitrary arguments to the -main invoked class when using the standalone mode is severely limited (IVY-952) (thanks to Patrick Woodworth)
- FIX: Correctly set ivy.resolved.configurations property when the conf string includes a negation operator (IVY-951) (thanks to Patrick Woodworth)
- FIX: Maven pom license url can contain xml entities (IVY-950)
- FIX: Maven pom license has name as optional element (IVY-949)
- FIX: Ivy doesn't throw an error when the parent POM cannot be loaded (IVY-931)
- FIX: Maven pom parser is not handling pom property ${project.parent.version} (IVY-955)
- DOCUMENTATION: Filesystem resolver: talks about "patterns" but does not mention these must become absolute file paths (IVY-910)