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>