You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ivy-commits@incubator.apache.org by gs...@apache.org on 2007/08/06 15:02:32 UTC

svn commit: r563162 - in /incubator/ivy/core/trunk: doc/use/ src/example/go-ivy/ src/java/org/apache/ivy/ant/ test/java/org/apache/ivy/core/resolve/

Author: gscokart
Date: Mon Aug  6 08:02:31 2007
New Revision: 563162

URL: http://svn.apache.org/viewvc?view=rev&rev=563162
Log:
IMPROVEMENT: replace * by *(public) when resolving inline (IVY-589)

Modified:
    incubator/ivy/core/trunk/doc/use/postresolvetask.html
    incubator/ivy/core/trunk/doc/use/resolve.html
    incubator/ivy/core/trunk/src/example/go-ivy/build.xml
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
    incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
    incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: incubator/ivy/core/trunk/doc/use/postresolvetask.html
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/use/postresolvetask.html?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/doc/use/postresolvetask.html (original)
+++ incubator/ivy/core/trunk/doc/use/postresolvetask.html Mon Aug  6 08:02:31 2007
@@ -42,11 +42,12 @@
 <li>organisation and module are not set</li>
 </ul>
 
-Since Ivy 1.4, there are two ways to run a [[ant:resolve]]: with an ivy file, or with the inline mode.
+<span class="since">Since Ivy 1.4</span>, there are two ways to run a [[ant:resolve]]: with an ivy file, or with the inline mode.
 When you call resolve with an ivy file, the default for it is to keep the resolved data for use by the subsequent post resolve tasks. When you run an inline resolve, the default is not to keep the data. You can override this behaviour by setting the keep attribute as you like.
 
 If you want to to reuse the resolved data obtained through a call to resolve in another build (i.e. not the current one), then you have to set the organisation and module attributes. This work only if the cache was not cleaned since your last resolve call. This does not work with inline calls, which must be performed in the same build.
 
+
 The attributes listed are then mostly used only if a resolve is triggered automatically.
 
 <h1>Attributes</h1>
@@ -55,9 +56,10 @@
     <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
 </thead>
 <tbody>
-    <tr><td>conf</td><td>a comma separated list of the configurations to retrieve</td>
-        <td>No. Defaults to the configurations resolved by the last resolve call, or * if no resolve was explicitly called</td></tr>
-    <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 false</td></tr>
+    <tr><td>conf</td><td>a comma separated list of the configurations to retrieve or '*'.
+<span class="since">Since 2.0</span> you can also use '*(public)' or '*(private)'.  Note that '*' is interpreted as '*(public)' when inline is true.</td>
+        <td>No. Defaults to the configurations resolved by the last resolve call, or '*' if no resolve was explicitly called</td></tr>
+    <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 false</td></tr>
     <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>

Modified: incubator/ivy/core/trunk/doc/use/resolve.html
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/doc/use/resolve.html?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/doc/use/resolve.html (original)
+++ incubator/ivy/core/trunk/doc/use/resolve.html Mon Aug  6 08:02:31 2007
@@ -88,6 +88,7 @@
 <i>Note for developers:
 After the call to this task, a reference to the module descriptor resolved is put in the ant project under the id <code>"ivy.resolved.descriptor"</code>.</i>
 
+<h1>Attributes</h1>
 <table class="ant">
 <thead>
     <tr><th class="ant-att">Attribute</th><th class="ant-desc">Description</th><th class="ant-req">Required</th></tr>
@@ -95,21 +96,37 @@
 <tbody>
     <tr><td>file</td><td>path to the ivy file to use for resolution</td>
         <td>No. Defaults to ${ivy.dep.file} or nothing in inline mode</td></tr>
-    <tr><td>conf</td><td>a comma separated list of the configurations to resolve</td><td>No. Defaults to ${ivy.configurations}</td></tr>
+
+    <tr><td>conf</td><td>a comma separated list of the configurations to resolve, or '*'.  
+<span class="since">Since 2.0</span>, you can also use '*(private)', '*(public)'.  Note that when inline is true, the configuration '*' is equivalent as '*(public)'.</td><td>No. Defaults to ${ivy.configurations}</td></tr>
+
     <tr><td>useOrigin</td><td>true to avoid the copy of local artifacts to the cache and use directly their original location, false otherwise <span class="since">since 1.4</span>. 
 To know if an artifact is local ivy asks to the resolver. Only filesystem resolver is considered local by default, but this can be disabled if you want to force the copy on one filesystem resolver and use the original location on another. Note that it is safe to use useOrigin even if you some no local resolvers, Ivy will behave as usual in this case. Note also that this only applies to artifacts, not to ivy files, which are still copied in the cache.</td><td>No. defaults to false</td></tr>
+
     <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>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>
+
     <tr><td>revision</td><td>the revision constraint to apply to the module to resolve in inline mode <span class="since">since 1.4</span></td><td>No. Defaults to "latest.integration" in inline mode, nothing in standard mode.</td></tr>
+
     <tr><td>type</td><td>comma separated list of accepted artifact types (<span class="since">since 1.2</span>)</td><td>No. defaults to ${ivy.resolve.default.type.filter}</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>failureproperty</td><td>the name of the property to set if the resolve failed <span class="since">since 1.4</span></td><td>No. No property is set by default.</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>showprogress</td><td>true to show dots while downloading, false otherwise</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>settingsRef</td><td>A reference to the ivy settings that must be used by this task <span class="since">(since 2.0)</span></td><td>No, 'ivy.instance' is taken by default.</td></tr>
+
     <tr><td>resolveId</td><td>An id which can be used later to refer to the results of this resolve <span class="since">(since 2.0)</span></td><td>No, defaults to '[org]-[module]'.</td></tr>
+
 </tbody>
 </table>
 <h1>Examples</h1>

Modified: incubator/ivy/core/trunk/src/example/go-ivy/build.xml
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/example/go-ivy/build.xml?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/src/example/go-ivy/build.xml (original)
+++ incubator/ivy/core/trunk/src/example/go-ivy/build.xml Mon Aug  6 08:02:31 2007
@@ -81,7 +81,7 @@
 		<echo message="using ivy to resolve commons-lang 2.1..."/>
         <!-- here comes the magic line: asks ivy to resolve a dependency on 
              commons-lang 2.1 and to build an ant path with it from its cache  -->
-        <ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" conf="default"
+        <ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" 
                        pathid="lib.path.id" inline="true"/>
         
 		<echo message="compiling..."/>

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyPostResolveTask.java Mon Aug  6 08:02:31 2007
@@ -109,6 +109,12 @@
             }
             String[] toResolve = getConfsToResolve(getOrganisation(), getModule() + "-caller",
                 conf, true);
+            //When we make an inline resolution, we can not resolve private confs.
+            for (int i = 0; i < toResolve.length; i++) {
+                if ("*".equals(toResolve[i])) {
+                    toResolve[i] = "*(public)";
+                }
+            }
             if (toResolve.length > 0) {
                 Message.verbose("using inline mode to resolve " + getOrganisation() + " "
                         + getModule() + " " + getRevision() + " ("

Modified: incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java (original)
+++ incubator/ivy/core/trunk/src/java/org/apache/ivy/ant/IvyResolve.java Mon Aug  6 08:02:31 2007
@@ -186,6 +186,11 @@
                 if (file != null) {
                     throw new BuildException("'file' not allowed when using inline mode");
                 }
+                for (int i = 0; i < confs.length; i++) {
+                    if ("*".equals(confs[i])) {
+                        confs[i] = "*(public)";
+                    }
+                }
                 if (revision == null) {
                     revision = "latest.integration";
                 }
@@ -292,11 +297,17 @@
     }
 
     private ResolveOptions getResolveOptions(String[] confs, IvySettings settings) {
-        return new ResolveOptions().setConfs(confs).setValidate(doValidate(settings))
+        return new ResolveOptions()
+                .setConfs(confs)
+                .setValidate(doValidate(settings))
                 .setArtifactFilter(FilterHelper.getArtifactTypeFilter(type))
-                .setRevision(revision).setCache(CacheManager.getInstance(settings, cache))
-                .setDate(getPubDate(pubdate, null)).setUseCacheOnly(useCacheOnly).setUseOrigin(
-                    useOrigin).setTransitive(transitive).setResolveId(resolveId);
+                .setRevision(revision)
+                .setCache(CacheManager.getInstance(settings, cache))
+                .setDate(getPubDate(pubdate, null))
+                .setUseCacheOnly(useCacheOnly)
+                .setUseOrigin(useOrigin)
+                .setTransitive(transitive)
+                .setResolveId(resolveId);
     }
 
     public String getModule() {

Modified: incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: http://svn.apache.org/viewvc/incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?view=diff&rev=563162&r1=563161&r2=563162
==============================================================================
--- incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java (original)
+++ incubator/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java Mon Aug  6 08:02:31 2007
@@ -786,6 +786,55 @@
                 .exists());
     }
 
+    
+    public void testResolveWithStartPublicConf() throws Exception {
+        // mod2.2 depends on mod1.3 and selects its artifacts
+        ResolveReport report = ivy.resolve(new File(
+                "test/repositories/1/org2/mod2.2/ivys/ivy-0.8.xml").toURL(),
+            getResolveOptions(new String[] {"*(public)"}));
+        assertNotNull(report);
+        ModuleDescriptor md = report.getModuleDescriptor();
+        assertNotNull(md);
+        ModuleRevisionId mrid = ModuleRevisionId.newInstance("org2", "mod2.2", "0.8");
+        assertEquals(mrid, md.getModuleRevisionId());
+
+        assertTrue(cacheManager.getResolvedIvyFileInCache(mrid).exists());
+
+        // dependencies
+        assertTrue(cacheManager.getIvyFileInCache(
+            ModuleRevisionId.newInstance("org1", "mod1.3", "3.0")).exists());
+        assertTrue(getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3-A", "jar", "jar")
+                .exists());
+        assertTrue(getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3-B", "jar", "jar")
+                .exists());
+        assertTrue(!getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3", "jar", "jar")
+                    .exists());
+    }
+
+    public void testResolveWithPrivateConf() throws Exception {
+        // mod2.2 depends on mod1.3 and selects its artifacts
+        ResolveReport report = ivy.resolve(new File(
+                "test/repositories/1/org2/mod2.2/ivys/ivy-0.8.xml").toURL(),
+            getResolveOptions(new String[] {"*(private)"}));
+        assertNotNull(report);
+        ModuleDescriptor md = report.getModuleDescriptor();
+        assertNotNull(md);
+        ModuleRevisionId mrid = ModuleRevisionId.newInstance("org2", "mod2.2", "0.8");
+        assertEquals(mrid, md.getModuleRevisionId());
+
+        assertTrue(cacheManager.getResolvedIvyFileInCache(mrid).exists());
+
+        assertTrue(cacheManager.getIvyFileInCache(
+            ModuleRevisionId.newInstance("org1", "mod1.3", "3.0")).exists());
+        assertTrue(getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3-A", "jar", "jar")
+                .exists());
+        assertTrue(!getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3-B", "jar", "jar")
+                .exists());
+        assertTrue(!getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3", "jar", "jar")
+                .exists());
+    }
+    
+    
     public void testResolveDefaultWithArtifactsConf1() throws Exception {
         // mod2.2 depends on mod1.3 and selects its artifacts
         ResolveReport report = ivy.resolve(new File(
@@ -831,6 +880,9 @@
         assertTrue(!getArchiveFileInCache("org1", "mod1.3", "3.0", "mod1.3", "jar", "jar").exists());
     }
 
+    
+    
+    
     public void testResolveDefaultWithArtifactsAndConfMapping() throws Exception {
         // mod2.2 depends on mod1.3 and specify its artifacts and a conf mapping
         ResolveReport report = ivy.resolve(new File(