Apache Ivy v2.0.0-beta2 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 of Ivy since it has graduated as a sub project of Apache Ant. As a beta version, we encourage the use of this version for testing and validation. Still API and features are still likely to change until final 2.0.0 version. 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. Review of settings loading This new Ivy version experience with a new way of loading the settings. The configure task is deprecated, and replaced by a settings task. By using the settings task, you can easily use several settings inside one Ant build script, and use a scope to tell Ivy which settings to use when calling a task which requires some settings. This is still an experiment though, so feedback is very welcome in the mailing lists. 3.4. 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.5. Relative paths resolution Relative paths resolution in Ivy used to be resolved against the current directory. Some work is in progress in this area, currently relative path resolution for the inclusion of configuration files in Ivy files has been modified to work relative to the Ivy file in which the configurations are included. This may break your dependency resolution if you used to use relative paths for configuration file inclusion. 3.6 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. 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 Gilles Scokart Contributors Andrea Bernardo Ciddio Mikkel Bjerg Mirko Bulovic Danno Ferrin Benjamin Francisoud Nicolas Lalevée Markus M. May Adrian Sandor Ruslan Shevchenko Johan Stuyts 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-beta1: - NEW: Introduce RepositoryManagementEngine (IVY-665) - NEW: Add support for importing environment variables (IVY-608) - NEW: Add ability for buildlist task to start build from specified module in the list (IVY-697) (thanks to Mirko Bulovic) - NEW: Cache dynamic revision resolution (IVY-694) - NEW: Make resolve console output configurable per resolve (IVY-715) - IMPROVEMENT: branch and extra attributes missing from info Ant task (IVY-721) - IMPROVEMENT: Review settings loading in Ant (IVY-703) - IMPROVEMENT: Move useOrigin to repository cache manager (IVY-700) - IMPROVEMENT: Make IBiblio resolver compatible with maven proxy (IVY-466) - IMPROVEMENT: Use namespace aware validation (IVY-553) - IMPROVEMENT: use ModuleRevisionId instead of ModuleId in IvySettings#getResolver (IVY-691) - IMPROVEMENT: Flexible cache management (IVY-399) (With contribution of Adrian Sandor) - IMPROVEMENT: Decrease memory footprint (IVY-662) - IMPROVEMENT: Downgrade Ant version requirement to 1.6 to build Ivy (IVY-687) - IMPROVEMENT: In the ResolveReport class, add the possibility to filter the evicted module while getting the list of DownloadArtifact (IVY-704) (thanks to Nicolas Lalevée) - IMPROVEMENT: Refactor the PomModuleDescriptorParser in order to allow easier integration of maven pom - FIX: ivy:install task not using validate attribute (IVY-728) - FIX: Bad conflict resolution leads to bad "configuration(s) not found" error (IVY-729) - FIX: Resolving for muyltiple configurations when one is not in the list of available configurations does not abort the build (IVY-720) - FIX: Branch attribute considered as both a standard and extra attribute on module info (IVY-726) - FIX: Branch attribute not set on deliver when using a non default branch (IVY-724) - FIX: NullPointerException reported instead of error in ivy:cachepath (IVY-690) - FIX: NPE when calling retrieve if some artifacts are not available locally (IVY-712) - FIX: When in ssh plugin we does not set username in scheme, Ivy always try to connect with guest username, even if we change one in panel. (IVY-710) (thanks to Ruslan Shevchenko) - FIX: NPE in SshCache during publish with ssh resolver without passFile (IVY-709) (thanks to Ruslan Shevchenko) - FIX: Update install ivy build file example (IVY-705) (thanks to Benjamin Francisoud) - FIX: Ivy swallows ParseException when using a latest strategy requiring module descriptors (IVY-702) (thanks to Nicolas Lalevée) - FIX: Problem with cached Ivy files which have extra attributes (IVY-693) - FIX: Detection of newer and better artifacts should not happen if 'checkModified' is set to 'false' (IVY-389) (with contribution from Johan Stuyts) - FIX: Ivy doesn't respect the order of the ivy patterns as defined in the settings (IVY-676) - FIX: XmlModuleDescriptorWriter doesn't write the deprecated attribute of the "ivy-module/configurations/conf" element (IVY-664) - FIX: XMLModuleDescriptorWriter does not write extra attributes (IVY-471) (with contribution from Mikkel Bjerg) - FIX: latest compatible conflict manager fails with circular dependencies and dynamic revision (IVY-663) - FIX: Strict conflictmanager seems to not support dynamic revisions (IVY-474) - FIX: NPE in namespace transformation during the ivy:findrevision and ivy:resolve task execution (IVY-659) (thanks to Andrea Bernardo Ciddio) - FIX: Maven test scope includes all runtime dependencies (IVY-682) - FIX: Inherit depedencies defined in parent pom (IVY-683) - FIX: Incorrect ivy from maven pom generation when classifier are user (IVY-714) (thanks to Ruslan Shevchenko) - FIX: m2 incompatibility - IVY does not recognize property section(IVY-637) - FIX: Maven test scope not mapped to test conf (IVY-744) (thanks to Danno Ferrin) - TASK: Remove cache attribute on Ant tasks (IVY-685) - Improvement in coding conventions (IVY-511) (with contribution from Markus M. May)