Commit 2fec9c47 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.0.x'

parents ef7390d3 8f7c96e8
...@@ -49,7 +49,7 @@ import org.springframework.boot.cli.compiler.DependencyResolutionContext; ...@@ -49,7 +49,7 @@ import org.springframework.boot.cli.compiler.DependencyResolutionContext;
* A {@link GrapeEngine} implementation that uses <a * A {@link GrapeEngine} implementation that uses <a
* href="http://eclipse.org/aether">Aether</a>, the dependency resolution system used by * href="http://eclipse.org/aether">Aether</a>, the dependency resolution system used by
* Maven. * Maven.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Phillip Webb * @author Phillip Webb
*/ */
...@@ -171,13 +171,27 @@ public class AetherGrapeEngine implements GrapeEngine { ...@@ -171,13 +171,27 @@ public class AetherGrapeEngine implements GrapeEngine {
String group = (String) dependencyMap.get("group"); String group = (String) dependencyMap.get("group");
String module = (String) dependencyMap.get("module"); String module = (String) dependencyMap.get("module");
String version = (String) dependencyMap.get("version"); String version = (String) dependencyMap.get("version");
String classifier = (String) dependencyMap.get("classifier");
String type = determineType(dependencyMap);
return new DefaultArtifact(group, module, classifier, type, version);
}
private String determineType(Map<?, ?> dependencyMap) {
String type = (String) dependencyMap.get("type"); String type = (String) dependencyMap.get("type");
String ext = (String) dependencyMap.get("ext");
if (type == null) { if (type == null) {
type = "jar"; type = ext;
if (type == null) {
type = "jar";
}
} }
else if (ext != null && !type.equals(ext)) {
return new DefaultArtifact(group, module, type, version); throw new IllegalArgumentException(
"If both type and ext are specified they must have the same value");
}
return type;
} }
private boolean isTransitive(Map<?, ?> dependencyMap) { private boolean isTransitive(Map<?, ?> dependencyMap) {
......
...@@ -19,7 +19,9 @@ package org.springframework.boot.cli.compiler.grape; ...@@ -19,7 +19,9 @@ package org.springframework.boot.cli.compiler.grape;
import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyClassLoader;
import java.net.URI; import java.net.URI;
import java.net.URL;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -34,7 +36,7 @@ import static org.junit.Assert.assertTrue; ...@@ -34,7 +36,7 @@ import static org.junit.Assert.assertTrue;
/** /**
* Tests for {@link AetherGrapeEngine}. * Tests for {@link AetherGrapeEngine}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
*/ */
public class AetherGrapeEngineTests { public class AetherGrapeEngineTests {
...@@ -113,6 +115,53 @@ public class AetherGrapeEngineTests { ...@@ -113,6 +115,53 @@ public class AetherGrapeEngineTests {
assertEquals(1, this.groovyClassLoader.getURLs().length); assertEquals(1, this.groovyClassLoader.getURLs().length);
} }
@Test(expected = IllegalArgumentException.class)
public void differingTypeAndExt() {
Map<String, Object> dependency = createDependency("org.grails",
"grails-dependencies", "2.4.0");
dependency.put("type", "foo");
dependency.put("ext", "bar");
this.grapeEngine.grab(Collections.emptyMap(), dependency);
}
@Test
public void pomDependencyResolutionViaType() {
Map<String, Object> args = new HashMap<String, Object>();
Map<String, Object> dependency = createDependency("org.springframework",
"spring-framework-bom", "4.0.5.RELEASE");
dependency.put("type", "pom");
this.grapeEngine.grab(args, dependency);
URL[] urls = this.groovyClassLoader.getURLs();
assertEquals(1, urls.length);
assertTrue(urls[0].toExternalForm().endsWith(".pom"));
}
@Test
public void pomDependencyResolutionViaExt() {
Map<String, Object> args = new HashMap<String, Object>();
Map<String, Object> dependency = createDependency("org.springframework",
"spring-framework-bom", "4.0.5.RELEASE");
dependency.put("ext", "pom");
this.grapeEngine.grab(args, dependency);
URL[] urls = this.groovyClassLoader.getURLs();
assertEquals(1, urls.length);
assertTrue(urls[0].toExternalForm().endsWith(".pom"));
}
@Test
public void resolutionWithClassifier() {
Map<String, Object> args = new HashMap<String, Object>();
Map<String, Object> dependency = createDependency("org.springframework",
"spring-jdbc", "3.2.4.RELEASE", false);
dependency.put("classifier", "sources");
this.grapeEngine.grab(args, dependency);
URL[] urls = this.groovyClassLoader.getURLs();
assertEquals(1, urls.length);
assertTrue(urls[0].toExternalForm().endsWith("-sources.jar"));
}
private Map<String, Object> createDependency(String group, String module, private Map<String, Object> createDependency(String group, String module,
String version) { String version) {
Map<String, Object> dependency = new HashMap<String, Object>(); Map<String, Object> dependency = new HashMap<String, Object>();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment