Return-Path: Delivered-To: apmail-ant-notifications-archive@minotaur.apache.org Received: (qmail 18105 invoked from network); 3 Jul 2009 21:42:03 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 3 Jul 2009 21:42:03 -0000 Received: (qmail 65108 invoked by uid 500); 3 Jul 2009 21:42:14 -0000 Delivered-To: apmail-ant-notifications-archive@ant.apache.org Received: (qmail 65043 invoked by uid 500); 3 Jul 2009 21:42:13 -0000 Mailing-List: contact notifications-help@ant.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ant.apache.org Delivered-To: mailing list notifications@ant.apache.org Received: (qmail 65034 invoked by uid 99); 3 Jul 2009 21:42:13 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Jul 2009 21:42:13 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 03 Jul 2009 21:42:00 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 1354E23888CF; Fri, 3 Jul 2009 21:41:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 -0000 To: notifications@ant.apache.org From: maartenc@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090703214139.1354E23888CF@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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"> - - - + + + + + + + + + + + + + - + @@ -42,6 +52,17 @@ + + + + + + + + + + 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 @@ svn co https://svn.apache.org/repos/asf/ant/ivy/core/branches/2.0.0-beta1 ivy-2.0.0-beta1 -

4. Prepare the files which need to be updated for the release.

-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 - -doc/template.html -doc/printTemplate.html - -replace - -${title} | Ivy Documentation - -by - -${title} | Ivy 2.0.0-beta1 Documentation - - -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: +

4. Add Ivy xsd file.

+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: ant -f build-release.xml release-xsd @@ -131,7 +115,15 @@ To be able to test the release within IvyDE, it can be deployed in the IvyDE update site. See that page to know how to process. -

12. Call for a vote to approve the release

+

12. Tag the svn repository

+As soon as you are happy with the artifacts to be released, it is time to tag the svn repo + +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." + + +

13. Call for a vote to approve the release

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 -

13. Tag the svn repository

-Now that the release is approved, it is time to tag the svn repo - -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." -

14. Upload to public repository

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: +
+svn cp https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME
+
+with $TAGNAME the name of the release, so it would be either ivy-$VERSION or ivyde-$VERSION. +

Test the updatesite

The updatesite is ready to be tested. You can deploy it where ever you want with the command: @@ -99,12 +105,6 @@

Deployment of a release

-The release is accepted, so we can tag the updatesite: -
-svn cp https://svn.apache.org/repos/asf/ant/ivy/updatesite/trunk https://svn.apache.org/repos/asf/ant/ivy/updatesite/tags/$TAGNAME
-
-with $TAGNAME the name of the release, so it would be either ivy-$VERSION or ivyde-$VERSION. - Then backup and deploy. On people.apache.org:
 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 @@
 

Automatically

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: - + 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:
  • latest.integration
  • selects the latest revision of the dependency module. -
  • latest.[any status]
  • selects the latest revision of the dependency module with at least the specified status. since 1.4 +
  • latest.[any status] since 1.4
  • 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.
  • end the revision with a +
  • 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. -
  • version ranges
  • mathematical notation for ranges can be used to match a range of version. since 1.4 +
  • version ranges since 1.4
  • 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, test->runtime(default) means that in the test configuration of the module the runtime conf of the dependency is required, but if doesn't exist, it will use the default conf instead. If default conf doesn't exist then it will be considered as an error. Note that the * wildcard can be used as fallback conf. -since 1.4 you can add simple conditions in the dependency mapping. This is done by adding a condition between '[' and ']'. If the condition evaluates to true, the mapping is performed. If the condition evaluates to false, the mapping will be ignored. For instance, test->[org=A]runtime,[org=B]default means that the test configuration will be mapped to the runtime conf for the dependencies of organisation 'A' and to the default conf for dependencies of organisation 'B'. +since 2.1 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. + +since 2.1 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 +*[att=value] +where att is the name of the attribute shared by the configurations of the group, and value + + + + + + + +
    + +Then you can do: + + + +To map the windows and linux configurations (the one which have the attribute axis equal to platform) to the default configuration of foo. + +since 1.4 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 true, the mapping is performed. If the condition evaluates to false, the mapping will be ignored. For instance, test->[org=A]runtime,[org=B]default means that the test configuration will be mapped to the runtime conf for the dependencies of organisation 'A' and to the default conf for dependencies of organisation 'B'.
  • Specify a semi-column separated list of any of the previous specs.
  • 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
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 @@ -${title} | Ivy 2.1.0-rc1 +${title} | Ivy @version@ @@ -32,9 +32,9 @@ - + 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 @@ + + + + + + + + - + + + 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 @@ + + + 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 @@

Inline mode

-since 1.4 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. +since 1.4 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. + +Remark: 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!

Resolve mode

since 2.0 The resolve mode allows to define how Ivy should use dependency revision constraints when performing the resolution. @@ -121,6 +123,8 @@ + + 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/**/ 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;