Author: maartenc
Date: Sun Nov  1 22:57:30 2009
New Revision: 831776

URL: http://svn.apache.org/viewvc?rev=831776&view=rev
Log:
IMPROVEMENT: discover 'src' sources in maven repos (IVY-1138)

Added:
    
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml   
(with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/
    
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0-src.jar
   (with props)
    
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.jar
   (with props)
    
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.pom
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java
    
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=831776&r1=831775&r2=831776&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Sun Nov  1 22:57:30 2009
@@ -94,6 +94,7 @@
        
    trunk
 =====================================
+- IMPROVEMENT: discover 'src' sources in maven repos (IVY-1138)
 - IMPROVEMENT: Trace a message when a property file referenced from the 
settings doesn't exixts (IVY-1074)
 - IMPROVEMENT: use defaultconf in combination with defaultconfmapping 
(IVY-1135) (thanks to Jon Schneider)
 

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java?rev=831776&r1=831775&r2=831776&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java
 (original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorBuilder.java
 Sun Nov  1 22:57:30 2009
@@ -597,6 +597,12 @@
             null, Collections.singletonMap("m:classifier", "sources"));
     }
 
+    public Artifact getSrcArtifact() {
+        return new MDArtifact(
+            ivyModuleDescriptor, mrid.getName(), "source", "jar", 
+            null, Collections.singletonMap("m:classifier", "src"));
+    }
+
     public Artifact getJavadocArtifact() {
         return new MDArtifact(
             ivyModuleDescriptor, mrid.getName(), "javadoc", "jar", 
@@ -607,6 +613,10 @@
         ivyModuleDescriptor.addArtifact("sources", getSourceArtifact());
     }
     
+    public void addSrcArtifact() {
+        ivyModuleDescriptor.addArtifact("sources", getSrcArtifact());
+    }
+
     public void addJavadocArtifact() {
         ivyModuleDescriptor.addArtifact("javadoc", getJavadocArtifact());
     }

Modified: 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java?rev=831776&r1=831775&r2=831776&view=diff
==============================================================================
--- 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
 (original)
+++ 
ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorParser.java
 Sun Nov  1 22:57:30 2009
@@ -283,7 +283,16 @@
                     Message.debug("source artifact found for " + mrid);
                     mdBuilder.addSourceArtifact();
                 } else {
-                    Message.debug("no source artifact found for " + mrid);
+                    // it seems that sometimes the 'src' classifier is used 
instead of 'sources'
+                    // Cfr. IVY-1138
+                    ArtifactOrigin srcArtifact = 
resolver.locate(mdBuilder.getSrcArtifact());
+                    if (!ArtifactOrigin.isUnknown(srcArtifact)
+                            && 
!srcArtifact.getLocation().equals(mainArtifactLocation)) {
+                        Message.debug("source artifact found for " + mrid);
+                        mdBuilder.addSrcArtifact();
+                    } else {
+                        Message.debug("no source artifact found for " + mrid);
+                    }
                 }
                 ArtifactOrigin javadocArtifact = 
resolver.locate(mdBuilder.getJavadocArtifact());
                 if (!ArtifactOrigin.isUnknown(javadocArtifact) 

Modified: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java?rev=831776&r1=831775&r2=831776&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
(original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ResolveTest.java 
Sun Nov  1 22:57:30 2009
@@ -38,8 +38,10 @@
 import org.apache.ivy.TestHelper;
 import org.apache.ivy.core.cache.ArtifactOrigin;
 import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
+import org.apache.ivy.core.deliver.DeliverOptions;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultArtifact;
+import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
 import org.apache.ivy.core.module.id.ModuleId;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
@@ -4131,6 +4133,27 @@
         assertTrue(jarFileInCache.length() != sourceFileInCache.length());
     }
 
+    public void testResolveMaven2GetSourcesWithSrcClassifier() throws 
Exception {
+        // IVY-1138
+        Ivy ivy = new Ivy();
+        ivy.configure(new 
File("test/repositories/m2/ivysettings.xml").toURL());
+        ResolveReport report = ivy.resolve(
+            ResolveTest.class.getResource("ivy-m2-with-src.xml"), 
+            getResolveOptions(new String[] {"*"}));
+        assertNotNull(report);
+        assertFalse(report.hasError());
+
+        assertTrue(getIvyFileInCache(
+            ModuleRevisionId.newInstance("org.apache", "test-src", 
"1.0")).exists());
+        File jarFileInCache = getArchiveFileInCache(ivy, "org.apache", 
"test-src",
+            "1.0", "test-src", "jar", "jar");
+        assertTrue(jarFileInCache.exists());
+        File sourceFileInCache = getArchiveFileInCache(ivy, "org.apache", 
"test-src", null,
+            "1.0", "test-src", "source", "jar", 
Collections.singletonMap("classifier", "src"));
+        assertTrue(sourceFileInCache.exists());
+        assertTrue(jarFileInCache.length() != sourceFileInCache.length());
+    }
+
     public void testResolveMaven2GetSourcesAndJavadocAuto() throws Exception {
         Ivy ivy = new Ivy();
         ivy.configure(new 
File("test/repositories/m2/ivysettings.xml").toURL());

Added: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml?rev=831776&view=auto
==============================================================================
--- 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml 
(added)
+++ 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml 
Sun Nov  1 22:57:30 2009
@@ -0,0 +1,24 @@
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<ivy-module version="2.0" xmlns:m="http://ant.apache.org/ivy/maven";>
+    <info organisation="apache" module="test-m2-with-src" revision="1.0" />
+    <dependencies>
+                  <dependency org="org.apache" name="test-src" rev="1.0" />
+    </dependencies>
+</ivy-module>

Propchange: 
ant/ivy/core/trunk/test/java/org/apache/ivy/core/resolve/ivy-m2-with-src.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0-src.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0-src.jar?rev=831776&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0-src.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.jar
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.jar?rev=831776&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.pom
URL: 
http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.pom?rev=831776&view=auto
==============================================================================
--- 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.pom
 (added)
+++ 
ant/ivy/core/trunk/test/repositories/m2/org/apache/test-src/1.0/test-src-1.0.pom
 Sun Nov  1 22:57:30 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.    
+-->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache</groupId>
+  <artifactId>test-src</artifactId>
+  <name>Test Module for Ivy M2 parsing</name>
+  <version>1.0</version>
+  <url>http://ant.apache.org/ivy</url>
+  <organization>
+    <name>Jayasoft</name>
+    <url>http://www.apache.org/</url>
+  </organization>
+</project>


Reply via email to