ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maart...@apache.org
Subject svn commit: r791026 [1/3] - in /ant/ivy/core/branches/2.1.x: ./ doc/ doc/dev/ doc/ivyfile/ doc/settings/ doc/use/ src/java/org/apache/ivy/ src/java/org/apache/ivy/ant/ src/java/org/apache/ivy/core/ src/java/org/apache/ivy/core/cache/ src/java/org/apach...
Date Fri, 03 Jul 2009 21:41:36 GMT
Author: maartenc
Date: Fri Jul  3 21:41:32 2009
New Revision: 791026

URL: http://svn.apache.org/viewvc?rev=791026&view=rev
Log:
Merged all changes from trunk into 2.1.x branch

Added:
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
      - copied unchanged from r791013, ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/EndRetrieveArtifactEvent.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
      - copied unchanged from r791013, ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/RetrieveArtifactEvent.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
      - copied unchanged from r791013, ant/ivy/core/trunk/src/java/org/apache/ivy/core/event/retrieve/StartRetrieveArtifactEvent.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/ConfigurationGroup.java
      - copied unchanged from r791013, ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ConfigurationGroup.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/ConfigurationIntersection.java
      - copied unchanged from r791013, ant/ivy/core/trunk/src/java/org/apache/ivy/core/module/descriptor/ConfigurationIntersection.java
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/plugins/parser/m2/test-ejb-type.pom
      - copied unchanged from r791013, ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/parser/m2/test-ejb-type.pom
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/plugins/version/PatternVersionMatcherTest.java
      - copied unchanged from r791013, ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/version/PatternVersionMatcherTest.java
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.1/ivys/ivy-0.5.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.1/ivys/ivy-0.5.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.1/jars/art21A-0.5.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.1/jars/art21A-0.5.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.1/jars/art21AB-0.5.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.1/jars/art21AB-0.5.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.1/jars/art21B-0.5.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.1/jars/art21B-0.5.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.2/ivys/ivy-0.9.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.2/ivys/ivy-0.9.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.2/jars/art22-1-0.9.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.2/jars/art22-1-0.9.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.2/jars/art22-2-0.9.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.2/jars/art22-2-0.9.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.5/ivys/ivy-0.9.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.5/ivys/ivy-0.9.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.6/ivys/ivy-0.13.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.6/ivys/ivy-0.13.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/ivys/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/ivys/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/ivys/ivy-0.6.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/ivys/ivy-0.6.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/jars/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/jars/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/jars/art28-linux-debug-0.6.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/jars/art28-linux-debug-0.6.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/jars/art28-linux-debug-thread-0.6.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/jars/art28-linux-debug-thread-0.6.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/jars/art28-win-debug-0.6.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/jars/art28-win-debug-0.6.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org2/mod2.8/jars/art28-win-debug-thread-0.6.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org2/mod2.8/jars/art28-win-debug-thread-0.6.jar
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.1/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.1/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.1/ivys/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.1/ivys/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.1/ivys/ivy-1.0.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.1/ivys/ivy-1.0.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.1/ivys/ivy-1.1.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.1/ivys/ivy-1.1.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.1/ivys/ivy-1.2.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.1/ivys/ivy-1.2.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.2/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.2/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.2/ivys/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.2/ivys/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.2/ivys/ivy-1.0.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.2/ivys/ivy-1.0.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.3/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.3/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.3/ivys/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.3/ivys/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.3/ivys/ivy-1.0.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.3/ivys/ivy-1.0.xml
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.4/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.4/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.4/ivys/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.4/ivys/
    ant/ivy/core/branches/2.1.x/test/repositories/1/org20/mod20.4/ivys/ivy-1.0.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/1/org20/mod20.4/ivys/ivy-1.0.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.3/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/2/mod15.3/
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.3/ivy-1.1.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod15.3/ivy-1.1.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.3/library.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod15.3/library.jar
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.4/
      - copied from r791013, ant/ivy/core/trunk/test/repositories/2/mod15.4/
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.4/ivy-1.1.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod15.4/ivy-1.1.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51A-4.4.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51A-4.4.jar
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.4.dll
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.4.dll
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.4.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.4.jar
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.4.so
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.4.so
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.5.dll
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.5.dll
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.5.jar
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.5.jar
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/art51B-4.5.so
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/art51B-4.5.so
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/ivy-4.4.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/ivy-4.4.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.1/ivy-4.5.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.1/ivy-4.5.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.2/ivy-3.0.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.2/ivy-3.0.xml
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod5.2/ivy-3.1.xml
      - copied unchanged from r791013, ant/ivy/core/trunk/test/repositories/2/mod5.2/ivy-3.1.xml
Modified:
    ant/ivy/core/branches/2.1.x/   (props changed)
    ant/ivy/core/branches/2.1.x/CHANGES.txt
    ant/ivy/core/branches/2.1.x/build-release.xml
    ant/ivy/core/branches/2.1.x/doc/config.js
    ant/ivy/core/branches/2.1.x/doc/dev/makerelease.html
    ant/ivy/core/branches/2.1.x/doc/dev/updatesite.html
    ant/ivy/core/branches/2.1.x/doc/install.html
    ant/ivy/core/branches/2.1.x/doc/ivyfile/dependency.html
    ant/ivy/core/branches/2.1.x/doc/printTemplate.html
    ant/ivy/core/branches/2.1.x/doc/settings/triggers.html
    ant/ivy/core/branches/2.1.x/doc/settings/version-matchers.html
    ant/ivy/core/branches/2.1.x/doc/template.html
    ant/ivy/core/branches/2.1.x/doc/use/postresolvetask.html
    ant/ivy/core/branches/2.1.x/doc/use/publish.html
    ant/ivy/core/branches/2.1.x/doc/use/resolve.html
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/Main.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyAntSettings.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyBuildNumber.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyConfigure.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyFindRevision.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyInfo.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyListModules.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyReport.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyTask.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/IvyPatternHelper.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/DefaultDependencyDescriptor.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/DefaultModuleDescriptor.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/MDArtifact.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/id/ModuleRevisionId.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/report/ArtifactDownloadReport.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/report/ConfigurationResolveReport.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/report/ResolveReport.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/resolve/IvyNode.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/resolve/IvyNodeCallers.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/resolve/IvyNodeUsage.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/resolve/ResolveEngine.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/resolve/VisitNode.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/retrieve/RetrieveEngine.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/settings/typedef.properties
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/namespace/Namespace.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/parser/ParserSettings.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/repository/Repository.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/repository/sftp/SFTPRepository.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/repository/ssh/SshCache.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/AbstractResolver.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/DependencyResolver.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/FileSystemResolver.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/packager/PackagerCacheEntry.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/resolver/util/ResolverHelper.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/plugins/version/VersionMatcher.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/util/filter/FilterHelper.java
    ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/util/url/HttpClientHandler.java
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/ant/IvyDeliverTest.java
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/core/resolve/ResolveTest.java
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/core/retrieve/RetrieveTest.java
    ant/ivy/core/branches/2.1.x/test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParserTest.java
    ant/ivy/core/branches/2.1.x/test/repositories/2/mod15.2/ivy-1.1.xml
    ant/ivy/core/branches/2.1.x/version.properties

Propchange: ant/ivy/core/branches/2.1.x/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Fri Jul  3 21:41:32 2009
@@ -1,5 +1,11 @@
-.classpath
-build
-lib
-bin
-nbproject
+.classpath
+
+build
+
+lib
+
+bin
+
+nbproject
+
+.ivy2

Propchange: ant/ivy/core/branches/2.1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul  3 21:41:32 2009
@@ -1,4 +1,4 @@
 /ant/ivy/core/branches/2.0.0:727187-727188,727520-732505
 /ant/ivy/core/branches/2.0.0-rc2:707459-708717
 /ant/ivy/core/branches/2.0.x:696803-698317
-/ant/ivy/core/trunk:695737,696014-696031,696442,756158-762525
+/ant/ivy/core/trunk:695737,696014-696031,696442-791013

Modified: ant/ivy/core/branches/2.1.x/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/CHANGES.txt?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/CHANGES.txt (original)
+++ ant/ivy/core/branches/2.1.x/CHANGES.txt Fri Jul  3 21:41:32 2009
@@ -8,12 +8,13 @@
  Committers
  	Maarten Coene
  	Xavier Hanin
-	Nicolas Lalevée
+	Nicolas Lalevee
  	Gilles Scokart
   
  Contributors
  	Ingo Adler
  	alex322
+ 	Mathieu Anquetin
 	Stephane Bailliez
 	Karl Baum
 	Mikkel Bjerg
@@ -49,6 +50,7 @@
 	Tat Leung
 	Costin Leau
 	Antoine Levy-Lambert
+	Andrey Lomakin
 	William Lyvers
 	Sakari Maaranen
 	Jan Materne
@@ -71,6 +73,7 @@
 	Andreas Sahlbach
 	Brian Sanders
 	Adrian Sandor
+	Jon Schneider
 	Ruslan Shevchenko
 	John Shields
 	Simon Steiner
@@ -83,7 +86,38 @@
     Chris Wood
 	Patrick Woodworth
 	Jaroslaw Wypychowski
+	Aleksey Zhukov
 	
+   2.1.0-rc2
+=====================================
+- DOCUMENTATION: not all attributes of publish task are documented (IVY-963) (thanks to Jon Schneider)
+- DOCUMENTATION: missing documentation for the 'Version Pattern Matcher' (IVY-871) (thanks to Jon Schneider)
+- DOCUMENTATION: added missing documentation for the 'keep' attribute on the (post)resolve Ant tasks (IVY-1091)
+- DOCUMENTATION: wrong url in installation.html (IVY-1054)
+
+- NEW: configuration intersections (IVY-1093)
+- NEW: configuration groups (IVY-1097)
+- NEW: added built-in versionmatcher: 'Version Pattern Matcher' (IVY-871)
+
+- IMPROVEMENT: Retrieve ant task doesn't support dynamic resolve mode (IVY-1085)
+- IMPROVEMENT: Added support for NTLM authentication (IVY-1094) (thanks to Mathieu Anquetin)
+- IMPROVEMENT: Standalone runner should accept all the same parameters as ant tasks (IVY-1090)
+- IMPROVEMENT: Pre and post retrieve artifact events (IVY-1084)
+
+- FIX: Ivy didn't fail when an outdated artifact in cache couldn't get deleted
+- FIX: ivy:resolve ignores branch in "dynamic" resolve mode (IVY-1087) (thanks to Aleksey Zhukov)
+- FIX: [originalname] not expanded during retrieve when module descriptor contains extra attributes (IVY-1096)
+- FIX: The Ant output wasn't always prefixed by the name of the task
+- FIX: Ivy buildnumber task does not find artifact in Sonatype Nexus repo (IVY-1069)
+- FIX: Publish with SSH (sftp or ssh) prevents enclosing java process to terminate (IVY-1075)
+- FIX: Ibiblio resolver throws IndexOutOfBoundsException when using snapshot versions with usepoms='false' (IVY-1028)
+- FIX: Wrong BuildException messages (findmodules) (IVY-1056)
+- FIX: PomModuleDescriptorBuilder does not resolve ejb type dependencies to jar extension (IVY-1058) (thanks to Andrey Lomakin)
+- FIX: Ivy doesn't handle maven dependencies with type 'test-jar' correctly (IVY-1066)
+- FIX: transitive dependencies and conflict management (IVY-1083)
+- FIX: exclude does not work in non-trivial conf case (IVY-983)
+- FIX: The artifact report task is generating duplicate artifact entries (IVY-1098)
+
    2.1.0-rc1
 =====================================
 - IMPROVEMENT: Fail the retrieve when multiple artifacts of same module are mapped to same file (IVY-1050)

Modified: ant/ivy/core/branches/2.1.x/build-release.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/build-release.xml?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/build-release.xml (original)
+++ ant/ivy/core/branches/2.1.x/build-release.xml Fri Jul  3 21:41:32 2009
@@ -22,15 +22,25 @@
 		xmlns:openpgp="antlib:org.apache.commons.openpgp.ant">
 	<import file="build.xml"/>
 	
-	<target name="generate-doc">
-		<taskdef uri="antlib:xooki" file="${doc.src.dir}/xooki/antlib.xml" />
-
+	<target name="generate-doc" depends="release-version">
+		<!-- copy documentation to temp dir to replace version tokens -->
+		<property name="doc.tmp.dir" value="${build.dir}/tempdoc" />
+		<mkdir dir="${doc.tmp.dir}" />
+		<copy todir="${doc.tmp.dir}" preservelastmodified="true" overwrite="true">
+			<fileset dir="${doc.src.dir}" />
+		    <filterset>
+		      <filter token="version" value="${build.version}"/>
+		    </filterset>
+		</copy>		
+		
         <copy todir="${doc.build.dir}">
 	        <fileset dir="${doc.src.dir}" includes="images/**,style/**,samples/**,js/**,ivy.xsd" />
         </copy>
+
 		<!-- requires java 6 jdk in path and Apache Ant 1.7 -->
+        <taskdef uri="antlib:xooki" file="${doc.src.dir}/xooki/antlib.xml" />
         <xooki:generate destDir="${doc.build.dir}" checkUpToDate="true">
-			<fileset dir="${doc.src.dir}">
+			<fileset dir="${doc.tmp.dir}">
 			    <include name="**/*.html"/>
 			    <exclude name="template.html"/>
 			    <exclude name="*Template.html"/>
@@ -42,6 +52,17 @@
 			    <exclude name="xooki/**"/>
 			</fileset>
 		</xooki:generate>
+
+		<!-- generate print-friendly doc -->
+		<!-- modify the basedir because othwise xooki.js will not be found! --> 
+		<ant antfile="../build-release.xml" target="generate-print-doc" dir="doc" />
+    </target>
+	
+	<target name="generate-print-doc">
+        <!-- requires java 6 jdk in path and Apache Ant 1.7 -->
+        <taskdef uri="antlib:xooki" file="${doc.src.dir}/xooki/antlib.xml" />
+        <xooki:print src="${doc.tmp.dir}/index.html" 
+                     dest="${doc.build.dir}/book.html" />
 	</target>
 
 	<target name="all-doc" depends="javadoc, generate-doc" />

Modified: ant/ivy/core/branches/2.1.x/doc/config.js
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/config.js?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/config.js (original)
+++ ant/ivy/core/branches/2.1.x/doc/config.js Fri Jul  3 21:41:32 2009
@@ -1,5 +1,5 @@
 xooki.util.mix({debug:true, 
-	jira: {ids: ['IVY'], url: 'http://issues.apache.org/jira'}, 
+	jira: {ids: ['IVY'], url: 'https://issues.apache.org/jira'}, 
 	shortcuts: {
 		svn: {pre: 'https://svn.apache.org/repos/asf/ant/ivy/core/trunk/'},
 		ant: {pre: xooki.c.relativeRoot+'use/', post:'.html'}

Modified: ant/ivy/core/branches/2.1.x/doc/dev/makerelease.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/dev/makerelease.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/dev/makerelease.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/dev/makerelease.html Fri Jul  3 21:41:32 2009
@@ -46,24 +46,8 @@
 <code>
 svn co https://svn.apache.org/repos/asf/ant/ivy/core/branches/2.0.0-beta1 ivy-2.0.0-beta1
 </code>
-<h3>4. Prepare the files which need to be updated for the release.</h3>
-Check again that files have proper revision information.
-It's also time to update the documentation template files which will be used for doc generation to include the version information in the page title.
-For instance in
-<code>
-doc/template.html
-doc/printTemplate.html
-</code>
-replace
-<code>
-<title>${title} | Ivy Documentation</title>
-</code>
-by
-<code>
-<title>${title} | Ivy 2.0.0-beta1 Documentation</title>
-</code>
-
-You also need to store the current ivy xml schema in the documentation, so that it will later be accessible on public web site. To do so, run the following command in the directory in which you checked out the release branch:
+<h3>4. Add Ivy xsd file.</h3>
+You need to store the current ivy xml schema in the documentation, so that it will later be accessible on public web site. To do so, run the following command in the directory in which you checked out the release branch:
 <code>
 ant -f build-release.xml release-xsd
 </code>
@@ -131,7 +115,15 @@
 
 To be able to test the release within IvyDE, it can be deployed in the IvyDE update site. See <a href="updatesite.html">that page</a> to know how to process.
 
-<h3>12. Call for a vote to approve the release</h3>
+<h3>12. Tag the svn repository</h3>
+As soon as you are happy with the artifacts to be released, it is time to tag the svn repo
+<code>
+svn copy https://svn.apache.org/repos/asf/ant/ivy/core/branches/2.0.0-beta1 \
+           https://svn.apache.org/repos/asf/ant/ivy/core/tags/2.0.0-beta1 \
+      -m "Tag release 2.0.0-beta1."
+</code>
+
+<h3>13. Call for a vote to approve the release</h3>
 Cast a vote to approve the release on the dev@ant.apache.org mailing list.
 
 Here is an example:
@@ -151,13 +143,6 @@
 
 ${me}, Ivy ${version} release manager
 </code>
-<h3>13. Tag the svn repository</h3>
-Now that the release is approved, it is time to tag the svn repo
-<code>
-svn copy https://svn.apache.org/repos/asf/ant/ivy/core/branches/2.0.0-beta1 \
-           https://svn.apache.org/repos/asf/ant/ivy/core/tags/2.0.0-beta1 \
-      -m "Tag release 2.0.0-beta1."
-</code>
 <h3>14. Upload to public repository</h3>
 If the release is approved, it's now time to make it public by uploading it to the public Apache distrib repository (i.e. /www/www.apache.org/dist/ant/ivy/[version] on people.a.o).
 

Modified: ant/ivy/core/branches/2.1.x/doc/dev/updatesite.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/dev/updatesite.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/dev/updatesite.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/dev/updatesite.html Fri Jul  3 21:41:32 2009
@@ -86,6 +86,12 @@
 
 And finally commit your changes.
 
+As soon as you ar happy with the committed artifacts, we can tag the updatesite:
+<pre>
+svn cp https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME
+</pre>
+with <tt>$TAGNAME</tt> the name of the release, so it would be either <tt>ivy-$VERSION</tt> or <tt>ivyde-$VERSION</tt>.
+
 <h2>Test the updatesite</h2>
 
 The updatesite is ready to be tested. You can deploy it where ever you want with the command:
@@ -99,12 +105,6 @@
 
 <h1><a name="deployment"></a>Deployment of a release</h1>
 
-The release is accepted, so we can tag the updatesite:
-<pre>
-svn cp https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME
-</pre>
-with <tt>$TAGNAME</tt> the name of the release, so it would be either <tt>ivy-$VERSION</tt> or <tt>ivyde-$VERSION</tt>.
-
 Then backup and deploy. On people.apache.org:
 <pre>
 cd /www/www.apache.org/dist/ant/ivyde/

Modified: ant/ivy/core/branches/2.1.x/doc/install.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/install.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/install.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/install.html Fri Jul  3 21:41:32 2009
@@ -52,7 +52,7 @@
 <h1>Automatically</h1>
 If you want to use Ivy only in your ant build scripts, and have an internet connection when you build, you can download Ivy from this site and use the downloaded version automatically, using this simple build snippet:
 <code type="xml">
-    <property name="ivy.install.version" value="2.1.0" />
+    <property name="ivy.install.version" value="2.1.0-rc2" />
     <condition property="ivy.home" value="${env.IVY_HOME}">
       <isset property="env.IVY_HOME" />
     </condition>

Modified: ant/ivy/core/branches/2.1.x/doc/ivyfile/dependency.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/ivyfile/dependency.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/ivyfile/dependency.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/ivyfile/dependency.html Fri Jul  3 21:41:32 2009
@@ -33,12 +33,14 @@
 The revision can be given as a fixed one (1.5.2, for instance) or as a latest (or dynamic) one. Several possibilities for dynamic revisions are implemented in Ivy:
 <ul>
 <li>latest.integration</li> selects the latest revision of the dependency module.
-<li>latest.[any status]</li> selects the latest revision of the dependency module with at least the specified status. <span class="since">since 1.4</span>
+<li>latest.[any status] <span class="since">since 1.4</span></li> selects the latest revision of the dependency module with at least the specified status. 
+
 For instance latest.milestone will select the latest version being either a milestone or a release, and latest.release will only selects the latest release. Note that in order to find the latest revision with the appropriate status Ivy has to parse all the ivy files in your repository from the last one until it finds such a revision. Hence don't be surprised if the resolution slow down.
 See also [[settings/statuses]] to see how to configure module statuses.
 <li>end the revision with a +</li> selects the latest sub-revision of the dependency module. For instance, 
 if the dependency module exists in revision 1.0.3, 1.0.7 and 1.1.2, "1.0.+" will select 1.0.7.
-<li>version ranges</li> mathematical notation for ranges can be used to match a range of version. <span class="since">since 1.4</span>  
+<li>version ranges <span class="since">since 1.4</span></li> mathematical notation for ranges can be used to match a range of version.   
+
 Examples:
 [1.0,2.0] matches all versions greater or equal to 1.0 and lower or equal to 2.0
 [1.0,2.0[ matches all versions greater or equal to 1.0 and lower than 2.0
@@ -110,7 +112,36 @@
 The syntax for specifying this adds the fallback conf between parenthesis right after the required conf. 
 For instance, <code>test->runtime(default)</code> means that in the test configuration of the module the <code>runtime</code> conf of the dependency is required, but if doesn't exist, it will use the <code>default</code> conf instead. If <code>default</code> conf doesn't exist then it will be considered as an error. Note that the <code>*</code> wildcard can be used as fallback conf.
 
-<span class="since">since 1.4</span> you can add simple conditions in the dependency mapping. This is done by adding a condition between '[' and ']'. If the condition evaluates to <code>true</code>, the mapping is performed. If the condition evaluates to <code>false</code>, the mapping will be ignored. For instance, <code>test->[org=A]runtime,[org=B]default</code> means that the <code>test</code> configuration will be mapped to the <code>runtime</code> conf for the dependencies of organisation 'A' and to the <code>default</code> conf for dependencies of organisation 'B'.
+<span class="since">since 2.1</span> It is also possible to define dependencies on configurations intersection. A configuration intersection is defined using a '+' sign to separate the configuration (eg 'A+B' means the intersection of configuration 'A' and 'B'). In that case only artifacts and dependencies defined in both configurations in the dependency will be part of the master configuration defining the dependency on the configuration intersection.
+
+Configuration intersections can also be used when specifying the confs to [[ant:resolve]]. 
+
+Moreover, the mapping '*->@' is handled as a specific case with configuration intersections: it maps also the intersections. So if one resolve conf A+B in a module which defines a dependency with mapping *->@, the mapping *->@ is interpreted as A+B->A+B so the intersection of A and B will be resolved in the dependency.
+
+<span class="since">since 2.1</span> you can refer to a group of configurations sharing the same value for an attribute as left side part of the dependency mapping. 
+
+The syntax is 
+<code>*[att=value]</code>
+where <em>att</em> is the name of the attribute shared by the configurations of the group, and <em>value</em is the value for this attribute that configurations must have to be part of the group. This is especially useful with extra attributes.
+
+For instance, if you have:
+<code>
+<configurations>
+	<conf name="red" e:axis="color" />
+	<conf name="blue" e:axis="color" />
+		
+	<conf name="windows" e:axis="platform" />
+	<conf name="linux" e:axis="platform"/>
+</configurations>
+</code>
+
+Then you can do:
+<code>
+<dependency org="acme" name="foo" rev="2.0" conf="*[axis=platform]->default"/>
+</code>
+To map the windows and linux configurations (the one which have the attribute axis equal to platform) to the default configuration of foo.
+
+<span class="since">since 1.4</span> you can add simple conditions in the right side of the dependency mapping. This is done by adding a condition between '[' and ']'. If the condition evaluates to <code>true</code>, the mapping is performed. If the condition evaluates to <code>false</code>, the mapping will be ignored. For instance, <code>test->[org=A]runtime,[org=B]default</code> means that the <code>test</code> configuration will be mapped to the <code>runtime</code> conf for the dependencies of organisation 'A' and to the <code>default</code> conf for dependencies of organisation 'B'.
 
 <li>Specify a semi-column separated list of any of the previous specs.</li> In this case, it is the union of the mapping which is kept. For instance, 'A -> B; * -> C' means that B conf is needed in A conf and C conf is need in all master conf... so both B & C dep conf are required in A master conf
 </ul>

Modified: ant/ivy/core/branches/2.1.x/doc/printTemplate.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/printTemplate.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/printTemplate.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/printTemplate.html Fri Jul  3 21:41:32 2009
@@ -20,7 +20,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
 	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
-<title>${title} | Ivy 2.1.0-rc1</title>
+<title>${title} | Ivy @version@</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <link rel="stylesheet" type="text/css" href="style/print-style.css" />
 </head>
@@ -32,9 +32,9 @@
 <table id="header" summary="Navigation elements." border="0"
 	cellpadding="0" cellspacing="0" width="100%">
 	<tr>
-		<td id="home" width="30%"><a href="http://incubator.apache.org/"
-			title="Home"><img src="images/apache-incubator-logo.png" alt="Apache Incubator"
-			border="0" /></a></td>
+        <td id="home" width="30%"><a href="http://ant.apache.org/"
+            title="Apache Ant"><img src="images/ant-group-logo.gif" alt="Apache Ant"
+            border="0" /></a></td>
 
 		<td class="product" width="70%" align="right" valign="middle"><img
 			src="images/logo.png" alt="ivy" border="0" /></td>

Modified: ant/ivy/core/branches/2.1.x/doc/settings/triggers.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/settings/triggers.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/settings/triggers.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/settings/triggers.html Fri Jul  3 21:41:32 2009
@@ -171,6 +171,40 @@
         </td>
         <td>Fired at the end of the retrieve process.</td>
     </tr>
+    <tr><td>pre-retrieve-artifact <br/><span class="since">since 2.1</span></td>
+        <td>
+          <ul>
+            <li>organisation</li>the organisation of the artifact which is about to be retrieved
+            <li>module</li>the name of the module of the artifact which is about to be retrieved
+            <li>revision</li>the revision of the the artifact which is about to be retrieved
+            <li>artifact</li>the name of the the artifact which is about to be retrieved
+            <li>type</li>the type of the the artifact which is about to be retrieved
+            <li>ext</li>the extension of the the artifact which is about to be retrieved
+            <li>metadata</li>true if the retrieved artifact is a metadata artifact, false for published artifacts 
+            <li>size</li>the size in bytes of the retrieved artifact
+            <li>from</li>the absolute path from which it will be retrieved (usually a location in cache)
+            <li>to</li>the absolute path to which it will be retrieved
+          </ul>
+        </td>
+        <td>Fired before an artifact is retrieved from cache to a local location</td>
+    </tr>
+    <tr><td>post-retrieve-artifact <br/><span class="since">since 2.1</span></td>
+        <td>
+          <ul>
+            <li>organisation</li>the organisation of the artifact which has just been retrieved
+            <li>module</li>the name of the module of the artifact which has just been retrieved
+            <li>revision</li>the revision of the the artifact which has just been retrieved
+            <li>artifact</li>the name of the the artifact which has just been retrieved
+            <li>type</li>the type of the the artifact which has just been retrieved
+            <li>ext</li>the extension of the the artifact which has just been retrieved
+            <li>metadata</li>true if the retrieved artifact is a metadata artifact, false for published artifacts 
+            <li>size</li>the size in bytes of the retrieved artifact
+            <li>from</li>the absolute path from which it has just been retrieved (usually a location in cache)
+            <li>to</li>the absolute path to which it has just been retrieved
+          </ul>
+        </td>
+        <td>Fired after an artifact is retrieved from cache to a local location</td>
+    </tr>
     <tr><td>pre-publish-artifact <br/><span class="since">since 2.0</span></td>
         <td>
           <ul>

Modified: ant/ivy/core/branches/2.1.x/doc/settings/version-matchers.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/settings/version-matchers.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/settings/version-matchers.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/settings/version-matchers.html Fri Jul  3 21:41:32 2009
@@ -32,8 +32,6 @@
 
 A version matcher is used to evaluate if a a dependency version contraint matches a dependency version.
 
-See <a href="../ivyfile/dependency.html">dependency</a> doc for details about built-in version matchers.
-
 <h1>Child elements</h1>
 <table class="ivy-children">
 <thead>
@@ -45,7 +43,86 @@
 </tbody>
 </table>
 
-	</textarea>
+<h1>Built-in Version Matchers</h1>
+<h2>Exact Revesion Matcher</h2>
+A matcher that matches a dependency revision id to the module revision id using simple string equality.
+
+<h2>Sub Revision Matcher</h2>
+A matcher that matches all revisions starting with a specific prefix. The syntax is: [prefix]+
+
+<table class="ivy-children">
+<thead>
+    <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr>
+</thead>
+<tbody>
+
+<tr><td>1.0.+</td><td>all revisions starting with '1.0.', like 1.0.1, 1.0.5, 1.0.a</td></tr>
+<tr><td>1.1+</td><td>all revisions starting with '1.1', like 1.1, 1.1.5, but also 1.10, 1.11</td></tr>
+</table>
+
+<h2>Latest (Status) Matcher</h2>
+
+A matcher that can matches versions based on their status. The predefined statuses in Ivy are 'release', 'milestone' and 'integration'. It's possible to define your own statuses, see [[settings/statuses]] for more detais.
+
+<table class="ivy-children">
+<thead>
+    <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr>
+</thead>
+<tbody>
+
+<tr><td>latest.integration</td><td>all versions</td></tr>
+<tr><td>latest.milestone</td><td>all modules having at least 'milestone' as status</td></tr>
+<tr><td>latest.release</td><td>all modules having at least 'release' as status</td></tr>
+<tr><td>latest.[any status]</td><td>all modules having at least the specified status</td></tr>
+</table>
+
+<h2>Version Range Matcher</h2>
+
+Range types are exhaustively listed by example in the table below.
+
+<table class="ivy-children">
+<thead>
+    <tr><th class="ivy-chld">Revision</th><th class="ivy-chld-desc">Matches</th></tr>
+</thead>
+<tbody>
+
+<tr><td> [1.0,2.0] </td><td> all versions greater or equal to 1.0 and lower or equal to 2.0</td></tr>
+
+<tr><td> [1.0,2.0[ </td><td> all versions greater or equal to 1.0 and lower than 2.0</td></tr>
+
+<tr><td> ]1.0,2.0] </td><td> all versions greater than 1.0 and lower or equal to 2.0<tr>
+
+<tr><td> ]1.0,2.0[ </td><td> all versions greater than 1.0 and lower than 2.0</td></tr>
+
+<tr><td> [1.0,) </td><td> all versions greater or equal to 1.0 </td></tr>
+
+<tr><td> ]1.0,) </td><td> all versions greater than 1.0</td></tr>
+
+<tr><td> (,2.0] </td><td> all versions lower or equal to 2.0</td></tr>
+
+<tr><td> (,2.0[ </td><td> all versions lower than 2.0 </td></tr>
+
+</tbody>
+</table>
+
+<h2>Version Pattern Matcher</h2>
+
+The version pattern matcher allows for more flexibility in pattern matching at the cost of adding a matcher declaration in Ivy settings.  A simple example is given below.
+
+<h3>Settings.xml</h3>
+<code type="xml">
+<pattern-vm>
+  <match revision="foo" pattern="${major}\.${minor}\.\d+" args="major, minor" matcher="regexp" />
+</pattern-vm>
+</code>
+
+<h3>Ivy.xml</h3>
+<code type="xml">
+<dependency org="acme" name="tool" rev="foo(1, 3)" />
+</code>
+
+The version pattern matcher may contain more than one match element.  The matcher will attempt to match a dependency revision against each match in sequence, checking the revision tag (e.g. foo(..)) and then the pattern.
+Matcher types may be one of "regexp", "exact", "glob", or "exactOrRegexp".  Glob pattern matching requires Apache ORO 2.0.8 or higher to be on the classpath.</textarea>
 <script type="text/javascript">xooki.postProcess();</script>
 </body>
 </html>

Modified: ant/ivy/core/branches/2.1.x/doc/template.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/template.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/template.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/template.html Fri Jul  3 21:41:32 2009
@@ -20,7 +20,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
 	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
-<title>${title} | Ivy 2.1.0-rc1 Documentation</title>
+<title>${title} | Ivy @version@ Documentation</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <link rel="stylesheet" type="text/css" href="style/style.css" />
   <script src="js/jquery.pack.js" type="text/javascript"></script>

Modified: ant/ivy/core/branches/2.1.x/doc/use/postresolvetask.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/use/postresolvetask.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/use/postresolvetask.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/use/postresolvetask.html Fri Jul  3 21:41:32 2009
@@ -63,8 +63,10 @@
     <tr><td>organisation</td><td>the organisation of the module to retrieve. This usually doesn't need to be set since it defaults to the last resolved one, except for inline mode where it is required.</td><td>Yes in inline mode, otherwise no, it then defaults to last resolved module name</td></tr>
     <tr><td>module</td><td>the name of the module to retrieve. This usually doesn't need to be set since it defaults to the last resolved one, except for inline mode where it is required.</td><td>Yes in inline mode, otherwise no, it then defaults to last resolved module name</td></tr>
     <tr><td>revision</td><td>the revision constraint of the module to retrieve. Used only in inline mode. <span class="since">since 1.4</span></td><td>No. Defaults to latest.integration</td></tr>
-    <tr><td>branch</td><td>the name of the branch to resolve in inline mode <span class="since">(since 2.1.0)</span></td><td>Defaults to no branch in inline mode, nothing in standard mode.</td></tr>
+    <tr><td>branch</td><td>the name of the branch to resolve in inline mode <span class="since">(since 2.1)</span></td><td>Defaults to no branch in inline mode, nothing in standard mode.</td></tr>
     <tr><td>transitive</td><td>true to resolve dependencies transitively, false otherwise <span class="since">since 1.4</span></td><td>No. Defaults to true</td></tr>
+    <tr><td>resolveMode</td><td>the [[ant:resolve resolve mode]] to use when an automatic resolve is triggered <span class="since">(since 2.1)</span></td><td>No. defaults to using the resolve mode set in the [[settings settings]]</td></tr>
+    <tr><td>keep</td><td>true to keep the results of the automatic resolve in memory, false to discard them. When this is false, the standard ivy properties won't be set and other postresolve-tasks (like retrieve and cachepath) won't be able to resuse the results of this resolve!</td><td>No. defaults to false for an inline resolve and to true in any other case</td></tr>
     <tr><td>haltonfailure</td><td>true to halt the build on ivy failure, false to continue</td><td>No. Defaults to true</td></tr>
     <tr><td>validate</td><td>true to force ivy files validation against ivy.xsd, false to force no validation</td><td>No. Defaults to default ivy value (as configured in configuration file)</td></tr>
     <tr><td>refresh</td><td>true to force Ivy to resolve dynamic revision in this resolve process, false to use cached resolved revision <span class="since">since 2.1</span></td><td>No. defaults to false</td></tr>

Modified: ant/ivy/core/branches/2.1.x/doc/use/publish.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/use/publish.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/use/publish.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/use/publish.html Fri Jul  3 21:41:32 2009
@@ -45,6 +45,9 @@
     <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
 </thead>
 <tbody>
+    <tr><td>organisation</td><td>the name of the organisation of the module to publish</td><td>No. Defaults to ${ivy.organisation} or the last resolved module organisation.</td></tr>
+    <tr><td>module</td><td>the name of the module to publish</td><td>No. Defaults to ${ivy.module} or the last resolved module name.</td></tr>
+    <tr><td>revision</td><td>the revision of the module to publish and also the published revision unless pubrevision is set</td><td>No. Defaults to ${ivy.revision} or the last resolve module revision.</td></tr>
     <tr><td>artifactspattern</td><td>the pattern to use to find artifacts to publish</td>
         <td>No. Defaults to ${ivy.publish.src.artifacts.pattern}</td></tr>
     <tr><td>resolver</td><td>the name of the resolver to use for publication</td>

Modified: ant/ivy/core/branches/2.1.x/doc/use/resolve.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/doc/use/resolve.html?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/doc/use/resolve.html (original)
+++ ant/ivy/core/branches/2.1.x/doc/use/resolve.html Fri Jul  3 21:41:32 2009
@@ -86,7 +86,9 @@
 </ul>
 
 <h2>Inline mode</h2>
-<span class="since">since 1.4</span> The inline mode allow to call a resolve without an ivy file, by setting directly the module which should be resolved from the repository. It is particularly useful to install released software, like an ant task for example. When inline is set to true, the organisation module and revision attributes are used to specify which module should be resolved from the repository.
+<span class="since">since 1.4</span> The inline mode allow to call a resolve without an ivy file, by setting directly the module which should be resolved from the repository. It is particularly useful to install released software, like an ant task for example. When inline is set to true, the organisation module and revision attributes are used to specify which module should be resolved from the repository. 
+
+<b>Remark:</b> if you want the standard ivy properties to be set or to reuse the results of an inline resolve by other post-resolve tasks like retrieve, cachepath, report, ..., you must set the keep attribute to true!
 
 <h2>Resolve mode</h2>
 <span class="since">since 2.0</span> The resolve mode allows to define how Ivy should use dependency revision constraints when performing the resolution.
@@ -121,6 +123,8 @@
 
     <tr><td>inline</td><td>true to use inline mode, false to resolve an ivy file <span class="since">since 1.4</span></td><td>No. defaults to false</td></tr>
 
+    <tr><td>keep</td><td>true to keep the results of the resolve in memory, false to discard them. When this is false, the standard ivy properties won't be set and other postresolve-tasks (like retrieve and cachepath) won't be able to resuse the results of this resolve!</td><td>No. defaults to false for an inline resolve and to true in any other case</td></tr>
+
     <tr><td>organisation</td><td>the organisation of the module to resolve in inline mode <span class="since">since 1.4</span></td><td>Yes in inline mode, no otherwise.</td></tr>
 
     <tr><td>module</td><td>the name of the module to resolve in inline mode <span class="since">since 1.4</span></td><td>Yes in inline mode, no otherwise.</td></tr>

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/Main.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/Main.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/Main.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/Main.java Fri Jul  3 21:41:32 2009
@@ -55,6 +55,7 @@
 import org.apache.ivy.util.cli.CommandLineParser;
 import org.apache.ivy.util.cli.OptionBuilder;
 import org.apache.ivy.util.cli.ParseException;
+import org.apache.ivy.util.filter.FilterHelper;
 import org.apache.ivy.util.url.CredentialsStore;
 import org.apache.ivy.util.url.URLHandler;
 import org.apache.ivy.util.url.URLHandlerDispatcher;
@@ -96,13 +97,23 @@
                     + "of the work with this as a dependency.").create())
             .addOption(new OptionBuilder("confs").arg("configurations").countArgs(false)
                 .description("resolve given configurations").create())
+            .addOption(new OptionBuilder("types").arg("types").countArgs(false)
+                .description("comma separated list of accepted artifact types").create())
+            .addOption(new OptionBuilder("mode").arg("resolvemode")
+                .description("the resolve mode to use").create())
+            .addOption(new OptionBuilder("notransitive")
+                .description("do not resolve dependencies transitively").create())
                 
             .addCategory("retrieve options")
             .addOption(new OptionBuilder("retrieve").arg("retrievepattern")
                 .description("use given pattern as retrieve pattern").create())
+            .addOption(new OptionBuilder("ivypattern").arg("pattern")
+                .description("use given pattern to copy the ivy files").create())
             .addOption(new OptionBuilder("sync")
                 .description("use sync mode for retrieve").create())
-            
+            .addOption(new OptionBuilder("symlink")
+                .description("create symbolic links").create())
+             
             .addCategory("cache path options")
             .addOption(new OptionBuilder("cachepath").arg("cachepathfile")
                 .description("outputs a classpath consisting of all dependencies in cache "
@@ -247,7 +258,15 @@
                 ivy.getSettings().useDeprecatedUseOrigin();
             }
             ResolveOptions resolveOptions = new ResolveOptions().setConfs(confs)
-                .setValidate(validate);
+                .setValidate(validate)
+                .setResolveMode(line.getOptionValue("mode"))
+                .setArtifactFilter(FilterHelper.getArtifactTypeFilter(line.getOptionValues("types")));
+            if (line.hasOption("notransitive")) {
+                resolveOptions.setTransitive(false);
+            }
+            if (line.hasOption("refresh")) {
+                resolveOptions.setRefresh(true);
+            }
             if (line.hasOption("refresh")) {
                 resolveOptions.setRefresh(true);
             }
@@ -265,9 +284,13 @@
                 if (retrievePattern.indexOf("[") == -1) {
                     retrievePattern = retrievePattern + "/lib/[conf]/[artifact].[ext]";
                 }
+                String ivyPattern = settings.substitute(line.getOptionValue("ivypattern"));
                 ivy.retrieve(md.getModuleRevisionId(), retrievePattern, new RetrieveOptions()
                         .setConfs(confs).setSync(line.hasOption("sync"))
-                        .setUseOrigin(line.hasOption("useOrigin")));
+                        .setUseOrigin(line.hasOption("useOrigin"))
+                        .setDestIvyPattern(ivyPattern)
+                        .setArtifactFilter(FilterHelper.getArtifactTypeFilter(line.getOptionValues("types")))
+                        .setMakeSymlinks(line.hasOption("symlink")));
             }
             if (line.hasOption("cachepath")) {
                 outputCachePath(ivy, cache, md, confs, line.getOptionValue("cachepath",

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyAntSettings.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyAntSettings.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyAntSettings.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyAntSettings.java Fri Jul  3 21:41:32 2009
@@ -35,6 +35,7 @@
 import org.apache.ivy.util.url.URLHandlerRegistry;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
+import org.apache.tools.ant.Task;
 import org.apache.tools.ant.taskdefs.Property;
 import org.apache.tools.ant.types.DataType;
 
@@ -107,12 +108,13 @@
      * @param  project  TODO add text.
      * @return  An IvySetting instance.
      */
-    public static IvyAntSettings getDefaultInstance(Project project) {
+    public static IvyAntSettings getDefaultInstance(Task task) {
+        Project project = task.getProject();
         Object defaultInstanceObj = project.getReference("ivy.instance");
         if (defaultInstanceObj != null
                 && defaultInstanceObj.getClass().getClassLoader() != IvyAntSettings.class
                         .getClassLoader()) {
-            project.log("ivy.instance reference an ivy:settings defined in an other classloader.  "
+            task.log("ivy.instance reference an ivy:settings defined in an other classloader.  "
                      + "An new default one will be used in this project.", Project.MSG_WARN);
             defaultInstanceObj = null;
         }
@@ -122,13 +124,13 @@
                     + " an not an IvyAntSettings.  Please don't use this reference id ()");
         }
         if (defaultInstanceObj == null) {
-            project.log("No ivy:settings found for the default reference 'ivy.instance'.  " 
-                    + "A default instance will be used", Project.MSG_INFO);
+            task.log("No ivy:settings found for the default reference 'ivy.instance'.  " 
+                    + "A default instance will be used", Project.MSG_VERBOSE);
             
             IvyAntSettings settings = new IvyAntSettings();
             settings.setProject(project);
             project.addReference("ivy.instance", settings);        
-            settings.createIvyEngine();
+            settings.createIvyEngine(task);
             return settings;
         } else {
             return (IvyAntSettings) defaultInstanceObj;
@@ -230,35 +232,36 @@
      * Return the configured Ivy instance.
      * @return Returns the configured Ivy instance.
      */
-    public Ivy getConfiguredIvyInstance() {
+    public Ivy getConfiguredIvyInstance(Task task) {
         if (ivyEngine == null) {
-            createIvyEngine();
+            createIvyEngine(task);
         }
         return ivyEngine;
     }
 
-    void createIvyEngine() {
+    void createIvyEngine(final Task task) {
+        Project project = task.getProject();
         Property prop = new Property() {
             public void execute() throws BuildException {
-                addProperties(getDefaultProperties());
+                addProperties(getDefaultProperties(task));
             }
         };
-        prop.setProject(getProject());
+        prop.setProject(project);
         prop.init();
         prop.execute();
 
         
-        IvyAntVariableContainer ivyAntVariableContainer = new IvyAntVariableContainer(getProject());
+        IvyAntVariableContainer ivyAntVariableContainer = new IvyAntVariableContainer(project);
 
         IvySettings settings = new IvySettings(ivyAntVariableContainer);
-        settings.setBaseDir(getProject().getBaseDir());
+        settings.setBaseDir(project.getBaseDir());
         
         if (file == null && url == null) {
-            defineDefaultSettingFile(ivyAntVariableContainer);
+            defineDefaultSettingFile(ivyAntVariableContainer, task);
         }
 
         Ivy ivy = Ivy.newInstance(settings);
-        ivy.getLoggerEngine().pushLogger(new AntMessageLogger(this));
+        ivy.getLoggerEngine().pushLogger(new AntMessageLogger(task));
         Message.showInfo();
         try {
             configureURLHandler();
@@ -288,11 +291,11 @@
         }
     }
 
-    protected Properties getDefaultProperties() {
+    protected Properties getDefaultProperties(Task task) {
         URL url = IvySettings.getDefaultPropertiesURL();
         // this is copy of loadURL code from ant Property task (not available in 1.5.1)
         Properties props = new Properties();
-        verbose("Loading " + url);
+        task.log("Loading " + url, Project.MSG_VERBOSE);
         try {
             InputStream is = url.openStream();
             try {
@@ -313,11 +316,11 @@
      * 
      * @param variableContainer
      */
-    private void defineDefaultSettingFile(IvyVariableContainer variableContainer) {
+    private void defineDefaultSettingFile(IvyVariableContainer variableContainer, Task task) {
         String settingsFileName = variableContainer.getVariable("ivy.conf.file");
         if (settingsFileName != null 
                 && !settingsFileName.equals(variableContainer.getVariable("ivy.settings.file"))) {
-            info("DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead");
+            task.log("DEPRECATED: 'ivy.conf.file' is deprecated, use 'ivy.settings.file' instead", Project.MSG_INFO);
         } else {
             settingsFileName = variableContainer.getVariable("ivy.settings.file");
         }
@@ -329,32 +332,24 @@
         };
         for (int i = 0; i < settingsLocations.length; i++) {
             file = settingsLocations[i];
-            verbose("searching settings file: trying " + file);
+            task.log("searching settings file: trying " + file, Project.MSG_VERBOSE);
             if (file.exists()) {
                 break;
             }
         }
         if (!file.exists()) {
             if (Boolean.valueOf(getProject().getProperty("ivy.14.compatible")).booleanValue()) {
-                info("no settings file found, using Ivy 1.4 default...");
+                task.log("no settings file found, using Ivy 1.4 default...", Project.MSG_VERBOSE);
                 file = null;
                 url = IvySettings.getDefault14SettingsURL();
             } else {
-                info("no settings file found, using default...");
+                task.log("no settings file found, using default...", Project.MSG_VERBOSE);
                 file = null;
                 url = IvySettings.getDefaultSettingsURL();
             }
         }
     }
 
-    private void verbose(String msg) {
-        log(msg, Project.MSG_VERBOSE);
-    }
-
-    private void info(String msg) {
-        log(msg, Project.MSG_INFO);
-    }
-
     private void configureURLHandler() {
         // TODO : the credentialStore should also be scoped
         CredentialsStore.INSTANCE.addCredentials(getRealm(), getHost(), getUsername(), getPasswd());

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyBuildNumber.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyBuildNumber.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyBuildNumber.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyBuildNumber.java Fri Jul  3 21:41:32 2009
@@ -135,10 +135,10 @@
 
     public void doExecute() throws BuildException {
         if (organisation == null) {
-            throw new BuildException("no organisation provided for ivy findmodules");
+            throw new BuildException("no organisation provided for ivy buildnumber task");
         }
         if (module == null) {
-            throw new BuildException("no module name provided for ivy findmodules");
+            throw new BuildException("no module name provided for ivy buildnumber task");
         }
         if (prefix == null) {
             throw new BuildException("null prefix not allowed");

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyConfigure.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyConfigure.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyConfigure.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyConfigure.java Fri Jul  3 21:41:32 2009
@@ -147,7 +147,7 @@
         
         settings.setProject(getProject());
         getProject().addReference(settingsId, settings);        
-        settings.createIvyEngine();
+        settings.createIvyEngine(this);
     }
 
     private void verbose(String msg) {

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyFindRevision.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyFindRevision.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyFindRevision.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyFindRevision.java Fri Jul  3 21:41:32 2009
@@ -81,13 +81,13 @@
 
     public void doExecute() throws BuildException {
         if (organisation == null) {
-            throw new BuildException("no organisation provided for ivy findmodules");
+            throw new BuildException("no organisation provided for ivy findrevision task");
         }
         if (module == null) {
-            throw new BuildException("no module name provided for ivy findmodules");
+            throw new BuildException("no module name provided for ivy findrevision task");
         }
         if (revision == null) {
-            throw new BuildException("no revision provided for ivy findmodules");
+            throw new BuildException("no revision provided for ivy findrevision task");
         }
 
         Ivy ivy = getIvyInstance();

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyInfo.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyInfo.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyInfo.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyInfo.java Fri Jul  3 21:41:32 2009
@@ -109,13 +109,13 @@
         try {
             if (organisation != null || module != null || revision != null || branch != null) {
                 if (organisation == null) {
-                    throw new BuildException("no organisation provided for ivy findmodules");
+                    throw new BuildException("no organisation provided for ivy info task");
                 }
                 if (module == null) {
-                    throw new BuildException("no module name provided for ivy findmodules");
+                    throw new BuildException("no module name provided for ivy info task");
                 }
                 if (revision == null) {
-                    throw new BuildException("no revision provided for ivy findmodules");
+                    throw new BuildException("no revision provided for ivy info task");
                 }
 
                 if (branch == null) {

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyListModules.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyListModules.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyListModules.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyListModules.java Fri Jul  3 21:41:32 2009
@@ -101,19 +101,19 @@
 
     public void doExecute() throws BuildException {
         if (organisation == null) {
-            throw new BuildException("no organisation provided for ivy findmodules");
+            throw new BuildException("no organisation provided for ivy listmodules task");
         }
         if (module == null) {
-            throw new BuildException("no module name provided for ivy findmodules");
+            throw new BuildException("no module name provided for ivy listmodules task");
         }
         if (revision == null) {
-            throw new BuildException("no revision provided for ivy findmodules");
+            throw new BuildException("no revision provided for ivy listmodules task");
         }
         if (property == null) {
-            throw new BuildException("no property provided for ivy findmodules");
+            throw new BuildException("no property provided for ivy listmodules task");
         }
         if (value == null) {
-            throw new BuildException("no value provided for ivy findmodules");
+            throw new BuildException("no value provided for ivy listmodules task");
         }
         Ivy ivy = getIvyInstance();
         IvySettings settings = ivy.getSettings();

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyPostResolveTask.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyPostResolveTask.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyPostResolveTask.java Fri Jul  3 21:41:32 2009
@@ -57,7 +57,7 @@
     private String revision = "latest.integration";
 
     private String resolveId;
-
+    
     private String type;
 
     private File file;
@@ -70,6 +70,8 @@
     
     private boolean refresh = false;
     
+    private String resolveMode = null;
+
     private String log = ResolveOptions.LOG_DEFAULT;
 
     public boolean isUseOrigin() {
@@ -296,6 +298,7 @@
         resolve.setRefresh(isRefresh());
         resolve.setLog(getLog());
         resolve.setSettingsRef(getSettingsRef());
+        resolve.setResolveMode(getResolveMode());
         return resolve;
     }
 
@@ -425,5 +428,12 @@
     public boolean isRefresh() {
         return refresh;
     }
+    
+    public String getResolveMode() {
+        return resolveMode;
+    }
 
+    public void setResolveMode(String resolveMode) {
+        this.resolveMode = resolveMode;
+    }
 }

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyReport.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyReport.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyReport.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyReport.java Fri Jul  3 21:41:32 2009
@@ -297,7 +297,7 @@
         
         return IvyPatternHelper.substitute(
             outputpattern, mRevId.getOrganisation(), mRevId.getName(),
-            mRevId.getRevision(), "", "", ext, conf, mRevId.getAttributes());
+            mRevId.getRevision(), "", "", ext, conf, mRevId.getAttributes(), null);
     }
 
     private void genStyled(String[] confs, File style, String ext) throws IOException {

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyTask.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyTask.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyTask.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/ant/IvyTask.java Fri Jul  3 21:41:32 2009
@@ -87,9 +87,9 @@
                         getLocation());
             }
         } else {
-            antIvyEngine = IvyAntSettings.getDefaultInstance(getProject());
+            antIvyEngine = IvyAntSettings.getDefaultInstance(this);
         }
-        Ivy ivy = ((IvyAntSettings) antIvyEngine).getConfiguredIvyInstance();
+        Ivy ivy = ((IvyAntSettings) antIvyEngine).getConfiguredIvyInstance(this);
         AntMessageLogger.register(this, ivy);
         return ivy;
     }

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/IvyPatternHelper.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/IvyPatternHelper.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/IvyPatternHelper.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/IvyPatternHelper.java Fri Jul  3 21:41:32 2009
@@ -70,13 +70,13 @@
     public static String substitute(String pattern, ModuleRevisionId moduleRevision) {
         return substitute(pattern, moduleRevision.getOrganisation(), moduleRevision.getName(),
             moduleRevision.getBranch(), moduleRevision.getRevision(), "ivy", "ivy", "xml", null,
-            null, moduleRevision.getAttributes());
+            null, moduleRevision.getAttributes(), null);
     }
 
     public static String substitute(String pattern, ModuleRevisionId moduleRevision,
             String artifact, String type, String ext) {
         return substitute(pattern, moduleRevision, new DefaultArtifact(moduleRevision, null,
-                artifact, type, ext), null);
+                artifact, type, ext));
     }
 
     public static String substitute(String pattern, Artifact artifact) {
@@ -84,60 +84,54 @@
     }
 
     public static String substitute(String pattern, Artifact artifact, ArtifactOrigin origin) {
-        return substitute(pattern, artifact.getModuleRevisionId(), artifact, null, origin);
+        return substitute(pattern, artifact.getModuleRevisionId(), artifact, (String) null, origin);
     }
 
     public static String substitute(String pattern, Artifact artifact, String conf) {
-        return substitute(pattern, artifact.getModuleRevisionId(), artifact, conf);
+        return substitute(pattern, artifact.getModuleRevisionId(), artifact, conf, (ArtifactOrigin) null);
     }
 
     public static String substitute(String pattern, ModuleRevisionId mrid, Artifact artifact) {
-        return substitute(pattern, mrid, artifact, null);
-    }
-
-    public static String substitute(String pattern, ModuleRevisionId mrid, Artifact artifact,
-            String conf) {
-        return substitute(pattern, mrid, artifact, conf, null);
+        return substitute(pattern, mrid, artifact, (String) null, (ArtifactOrigin) null);
     }
 
     public static String substitute(String pattern, ModuleRevisionId mrid, Artifact artifact,
             String conf, ArtifactOrigin origin) {
-        Map attributes = new HashMap();
-        attributes.putAll(mrid.getAttributes());
-        attributes.putAll(artifact.getAttributes());
         return substitute(pattern, mrid.getOrganisation(), mrid.getName(), mrid.getBranch(), mrid
                 .getRevision(), artifact.getName(), artifact.getType(), artifact.getExt(), conf,
-            origin, attributes);
+            origin, mrid.getExtraAttributes(), artifact.getExtraAttributes());
     }
 
     public static String substitute(String pattern, String org, String module, String revision,
             String artifact, String type, String ext) {
-        return substitute(pattern, org, module, revision, artifact, type, ext, null);
+        return substitute(pattern, org, module, (String) null, revision, artifact, type, ext, (String) null, 
+                (ArtifactOrigin) null, (Map) null, (Map) null);
     }
 
     // CheckStyle:ParameterNumber OFF
     public static String substitute(String pattern, String org, String module, String revision,
             String artifact, String type, String ext, String conf) {
-        return substitute(pattern, org, module, revision, artifact, type, ext, conf, null);
-    }
-
-    public static String substitute(String pattern, String org, String module, String revision,
-            String artifact, String type, String ext, String conf, Map extraAttributes) {
-        return substitute(pattern, org, module, revision, artifact, type, ext, conf, null,
-            extraAttributes);
+        return substitute(pattern, org, module, (String) null, revision, artifact, type, ext, conf, 
+                (ArtifactOrigin) null, (Map) null, (Map) null);
     }
 
     public static String substitute(String pattern, String org, String module, String revision,
-            String artifact, String type, String ext, String conf, ArtifactOrigin origin,
-            Map extraAttributes) {
-        return substitute(pattern, org, module, null, revision, artifact, type, ext, conf, origin,
-            extraAttributes);
+            String artifact, String type, String ext, String conf, Map extraModuleAttributes, 
+            Map extraArtifactAttributes) {
+        return substitute(pattern, org, module, (String) null, revision, artifact, type, ext, conf, 
+                (ArtifactOrigin) null, extraModuleAttributes, extraArtifactAttributes);
     }
 
     public static String substitute(String pattern, String org, String module, String branch,
             String revision, String artifact, String type, String ext, String conf,
-            ArtifactOrigin origin, Map extraAttributes) {
-        Map tokens = new HashMap(extraAttributes == null ? Collections.EMPTY_MAP : extraAttributes);
+            ArtifactOrigin origin, Map extraModuleAttributes, Map extraArtifactAttributes) {
+        Map tokens = new HashMap();
+        if (extraModuleAttributes != null) {
+            tokens.putAll(extraModuleAttributes);
+        }
+        if (extraArtifactAttributes != null) {
+            tokens.putAll(extraArtifactAttributes);
+        }
         tokens.put(ORGANISATION_KEY, org == null ? "" : org);
         tokens.put(ORGANISATION_KEY2, org == null ? "" : org);
         tokens.put(MODULE_KEY, module == null ? "" : module);
@@ -147,9 +141,13 @@
         tokens.put(TYPE_KEY, type == null ? "jar" : type);
         tokens.put(EXT_KEY, ext == null ? "jar" : ext);
         tokens.put(CONF_KEY, conf == null ? "default" : conf);
-        tokens.put(ORIGINAL_ARTIFACTNAME_KEY, origin == null ? new OriginalArtifactNameValue(org,
-                module, branch, revision, artifact, type, ext) : new OriginalArtifactNameValue(
-                origin));
+        if (origin == null) {
+            tokens.put(ORIGINAL_ARTIFACTNAME_KEY, new OriginalArtifactNameValue(org,
+                module, branch, revision, artifact, type, ext, extraModuleAttributes, extraArtifactAttributes));
+        } else { 
+            tokens.put(ORIGINAL_ARTIFACTNAME_KEY, new OriginalArtifactNameValue(origin));
+        }
+                
         return substituteTokens(pattern, tokens);
     }
     // CheckStyle:ParameterNumber ON
@@ -206,6 +204,11 @@
     }
 
     public static String substituteTokens(String pattern, Map tokens) {
+        Map tokensCopy = new HashMap(tokens);
+        if (tokensCopy.containsKey(ORGANISATION_KEY) && !tokensCopy.containsKey(ORGANISATION_KEY2)) {
+            tokensCopy.put(ORGANISATION_KEY2, tokensCopy.get(ORGANISATION_KEY));
+        }
+        
         StringBuffer buffer = new StringBuffer();
 
         char[] chars = pattern.toCharArray();
@@ -265,7 +268,7 @@
                     }
 
                     String token = tokenBuffer.toString();
-                    Object tokenValue = tokens.get(token);
+                    Object tokenValue = tokensCopy.get(token);
                     String value = (tokenValue == null) ? null : tokenValue.toString();
 
                     if (insideOptionalPart) {
@@ -395,18 +398,23 @@
 
         private String revision;
 
+        private Map extraModuleAttributes;
+        
         // artifact properties
         private String artifactName;
 
         private String artifactType;
 
         private String artifactExt;
+        
+        private Map extraArtifactAttributes;
 
         // cached origin;
         private ArtifactOrigin origin;
-
+        
         public OriginalArtifactNameValue(String org, String moduleName, String branch,
-                String revision, String artifactName, String artifactType, String artifactExt) {
+                String revision, String artifactName, String artifactType, String artifactExt, 
+                Map extraModuleAttributes, Map extraArtifactAttributes) {
             this.org = org;
             this.moduleName = moduleName;
             this.branch = branch;
@@ -414,6 +422,8 @@
             this.artifactName = artifactName;
             this.artifactType = artifactType;
             this.artifactExt = artifactExt;
+            this.extraModuleAttributes = extraModuleAttributes;
+            this.extraArtifactAttributes = extraArtifactAttributes;
         }
 
         /**
@@ -427,9 +437,9 @@
         public String toString() {
             if (origin == null) {
                 ModuleRevisionId revId = ModuleRevisionId.newInstance(org, moduleName, branch,
-                    revision);
+                    revision, extraModuleAttributes);
                 Artifact artifact = new DefaultArtifact(revId, null, artifactName, artifactType,
-                        artifactExt);
+                        artifactExt, extraArtifactAttributes);
 
                 // TODO cache: see how we could know which actual cache manager to use, since this 
                 // will fail when using a resolver in a chain with a specific cache manager

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/DefaultRepositoryCacheManager.java Fri Jul  3 21:41:32 2009
@@ -49,6 +49,7 @@
 import org.apache.ivy.plugins.parser.ParserSettings;
 import org.apache.ivy.plugins.parser.xml.XmlModuleDescriptorParser;
 import org.apache.ivy.plugins.repository.ArtifactResourceResolver;
+import org.apache.ivy.plugins.repository.Resource;
 import org.apache.ivy.plugins.repository.ResourceDownloader;
 import org.apache.ivy.plugins.repository.ResourceHelper;
 import org.apache.ivy.plugins.resolver.DependencyResolver;
@@ -883,6 +884,7 @@
             Message.error("impossible to acquire lock for " + mrid);
             return null;
         }
+        BackupResourceDownloader backupDownloader = new BackupResourceDownloader(downloader);
         try {
             // now let's see if we can find it in cache and if it is up to date
             ResolvedModuleRevision rmr = doFindModuleInCache(mrid, options, null);
@@ -925,7 +927,7 @@
                     public ResolvedResource resolve(Artifact artifact) {
                         return mdRef;
                     }
-                }, downloader, 
+                }, backupDownloader,
                 new CacheDownloadOptions().setListener(options.getListener()).setForce(true));
             Message.verbose("\t" + report); 
 
@@ -970,7 +972,14 @@
                                 transformedArtifact, origin, false);
                             if (artFile.exists()) {
                                 Message.debug("deleting " + artFile);
-                                artFile.delete();
+                                if (!artFile.delete()) {
+                                    // Old artifacts couldn't get deleted!
+                                    // Restore the original ivy file so the next time we
+                                    // resolve the old artifacts are deleted again
+                                    backupDownloader.restore();
+                                    Message.error("Couldn't delete outdated artifact from cache: " + artFile);
+                                    return null;
+                                }
                             }
                             removeSavedArtifactOrigin(transformedArtifact);
                         }
@@ -999,6 +1008,7 @@
             }
         } finally {
             unlockMetadataArtifact(mrid);
+            backupDownloader.cleanUp();
         }
         
     }
@@ -1106,5 +1116,41 @@
         Message.debug("\t\tchangingPattern: " + getChangingPattern());
         Message.debug("\t\tchangingMatcher: " + getChangingMatcherName());
     }
+    
+    private class BackupResourceDownloader implements ResourceDownloader {
+        
+        private ResourceDownloader delegate;
+        private File backup;
+        private String originalPath;
+        
+        private BackupResourceDownloader(ResourceDownloader delegate) {
+            this.delegate = delegate;
+        }
+
+        public void download(Artifact artifact, Resource resource, File dest) throws IOException {
+            // keep a copy of the original file
+            if (dest.exists()) {
+                originalPath = dest.getAbsolutePath();
+                backup = new File(dest.getAbsolutePath() + ".backup");
+                FileUtil.copy(dest, backup, null, true);
+            }
+            delegate.download(artifact, resource, dest);
+        }
+        
+        public void restore() throws IOException {
+            if ((backup != null) && backup.exists()) {
+                File original = new File(originalPath);
+                FileUtil.copy(backup, original, null, true);
+                backup.delete();
+            }
+        }
+        
+        public void cleanUp() {
+            if ((backup != null) && backup.exists()) {
+                backup.delete();
+            }
+        }
+        
+    }
 
 }

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/cache/ParserSettingsMonitor.java Fri Jul  3 21:41:32 2009
@@ -25,6 +25,7 @@
 import java.util.Map.Entry;
 
 import org.apache.ivy.core.RelativeUrlResolver;
+import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.module.status.StatusManager;
 import org.apache.ivy.plugins.conflict.ConflictManager;
@@ -129,6 +130,10 @@
         public File resolveFile(String filename) {
             return delegatedSettings.resolveFile(filename);
         }
+        
+        public String getDefaultBranch(ModuleId moduleId) {
+            return delegatedSettings.getDefaultBranch(moduleId);
+        }
 
         public Map substitute(Map strings) {
             Map substituted = new LinkedHashMap();

Modified: ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/Configuration.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/Configuration.java?rev=791026&r1=791025&r2=791026&view=diff
==============================================================================
--- ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/Configuration.java (original)
+++ ant/ivy/core/branches/2.1.x/src/java/org/apache/ivy/core/module/descriptor/Configuration.java Fri Jul  3 21:41:32 2009
@@ -17,6 +17,10 @@
  */
 package org.apache.ivy.core.module.descriptor;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Set;
 
@@ -51,6 +55,17 @@
             return name;
         }
     }
+    
+    public static Collection/*<Configuration>*/ findConfigurationExtending(String conf, Configuration[] confs) {
+        Collection extendingConfs = new ArrayList();
+        for (int i = 0; i < confs.length; i++) {
+            if (confs[i] != null && Arrays.asList(confs[i].getExtends()).contains(conf)) {
+                extendingConfs.add(confs[i]);
+                extendingConfs.addAll(findConfigurationExtending(confs[i].getName(), confs));
+            }
+        }
+        return extendingConfs;
+    }
 
     private String name;
 



Mime
View raw message