From 28090e8a5ff5c3eae3a791ec8c3dafcc54790c34 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sat, 7 Jun 2014 23:05:51 -0700 Subject: [PATCH 1/4] Generate and attach dependency-tree Update spring-boot-versions to generate a dependency-tree file and attach it as an artifact. The file is generated by creating a temporary POM and calling the invoker plugin. The spring-boot-versions POM now depends on all spring-boot-starter-* POMs to ensure that they have been installed before the dependency tree is processes. See gh-1047 --- spring-boot-dependencies/pom.xml | 12 ++ spring-boot-starters/pom.xml | 1 + spring-boot-versions/pom.xml | 178 ++++++++++++++++++ .../src/dependency-tree/pom.xml | 40 ++++ .../groovy/generateDependencyTreePom.groovy | 34 ++++ 5 files changed, 265 insertions(+) create mode 100644 spring-boot-versions/src/dependency-tree/pom.xml create mode 100644 spring-boot-versions/src/main/groovy/generateDependencyTreePom.groovy diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index 6cca2f6810..38bc2c3c4e 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -162,6 +162,12 @@ org.springframework.boot spring-boot-starter 1.1.0.BUILD-SNAPSHOT + + + commons-logging + commons-logging + + org.springframework.boot @@ -292,6 +298,12 @@ org.springframework.boot spring-boot-starter-test 1.1.0.BUILD-SNAPSHOT + + + commons-logging + commons-logging + + org.springframework.boot diff --git a/spring-boot-starters/pom.xml b/spring-boot-starters/pom.xml index 309f13eb05..87c07167df 100644 --- a/spring-boot-starters/pom.xml +++ b/spring-boot-starters/pom.xml @@ -20,6 +20,7 @@ ${basedir}/.. + spring-boot-starter spring-boot-starter-amqp spring-boot-starter-aop diff --git a/spring-boot-versions/pom.xml b/spring-boot-versions/pom.xml index 94c6c93994..63160430b0 100644 --- a/spring-boot-versions/pom.xml +++ b/spring-boot-versions/pom.xml @@ -28,6 +28,7 @@ + org.apache.maven.plugins maven-help-plugin @@ -42,6 +43,49 @@ + + org.codehaus.gmavenplus + gmavenplus-plugin + + + + execute + + generate-resources + + + + + + + + + + org.codehaus.groovy + groovy-all + ${groovy.version} + + + + + org.apache.maven.plugins + maven-invoker-plugin + + + generate-dependency-tree + generate-resources + + run + + + ${project.build.directory}/invoker + src/dependency-tree/settings.xml + true + ${basedir}/src/dependency-tree/pom.xml + + + + org.codehaus.mojo xml-maven-plugin @@ -89,6 +133,10 @@ ${project.build.directory}/effective-pom/spring-boot-versions.xml effective-pom + + ${project.build.directory}/dependency-tree/dependency-tree.txt + dependency-tree + @@ -96,4 +144,134 @@ + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-amqp + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-batch + + + org.springframework.boot + spring-boot-starter-data-elasticsearch + + + org.springframework.boot + spring-boot-starter-data-gemfire + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + org.springframework.boot + spring-boot-starter-data-rest + + + org.springframework.boot + spring-boot-starter-data-solr + + + org.springframework.boot + spring-boot-starter-freemarker + + + org.springframework.boot + spring-boot-starter-groovy-templates + + + org.springframework.boot + spring-boot-starter-hornetq + + + org.springframework.boot + spring-boot-starter-integration + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.springframework.boot + spring-boot-starter-jetty + + + org.springframework.boot + spring-boot-starter-log4j + + + org.springframework.boot + spring-boot-starter-logging + + + org.springframework.boot + spring-boot-starter-mobile + + + org.springframework.boot + spring-boot-starter-redis + + + org.springframework.boot + spring-boot-starter-remote-shell + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-social-facebook + + + org.springframework.boot + spring-boot-starter-social-linkedin + + + org.springframework.boot + spring-boot-starter-social-twitter + + + org.springframework.boot + spring-boot-starter-test + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-velocity + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-websocket + + diff --git a/spring-boot-versions/src/dependency-tree/pom.xml b/spring-boot-versions/src/dependency-tree/pom.xml new file mode 100644 index 0000000000..b100b46450 --- /dev/null +++ b/spring-boot-versions/src/dependency-tree/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-versions + @project.version@ + ../../target/dependency-tree + + spring-boot-versions-dependency-tree + pom + + + + org.apache.maven.plugins + maven-dependency-plugin + + + write-dependencies-tree + generate-resources + + tree + + + @project.build.directory@/dependency-tree/dependency-tree.txt + true + + + + + + + + + spring-ext + http://repo.spring.io/ext-release-local/ + + + diff --git a/spring-boot-versions/src/main/groovy/generateDependencyTreePom.groovy b/spring-boot-versions/src/main/groovy/generateDependencyTreePom.groovy new file mode 100644 index 0000000000..4a931da9ff --- /dev/null +++ b/spring-boot-versions/src/main/groovy/generateDependencyTreePom.groovy @@ -0,0 +1,34 @@ +// Generate a POM from the effective-pom that can be used to build a complete dependency tree + +import groovy.util.* +import groovy.xml.* + +def effectivePom = new XmlSlurper().parse( + new File(project.build.directory, 'effective-pom/spring-boot-versions.xml')) + +effectivePom.dependencyManagement.dependencies.dependency.findAll{ it.groupId != "org.springframework.boot" }.each { + effectivePom.dependencies.appendNode( it ) +} + +// effectivePom.appendNode(effectivePom.dependencyManagement.dependencies) +effectivePom.parent.replaceNode {} +effectivePom.dependencyManagement.replaceNode {} +effectivePom.build.replaceNode {} +effectivePom.properties.replaceNode {} +effectivePom.repositories.replaceNode {} +effectivePom.pluginRepositories.replaceNode {} +effectivePom.reporting.replaceNode {} + +out = new StreamingMarkupBuilder() +String xmlResult = out.bind { + mkp.declareNamespace("": "http://maven.apache.org/POM/4.0.0") + mkp.yield effectivePom +} + + +def outputDir = new File(project.build.directory, 'dependency-tree'); +outputDir.mkdirs(); +XmlUtil.serialize(xmlResult, new FileWriter(new File(outputDir, 'pom.xml'))) + + + From addc1f77bd7a3a2ddf59f1baf208e6bff7be4e14 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sun, 8 Jun 2014 12:04:00 -0700 Subject: [PATCH 2/4] Support transitive excludes in dependency-tools Update spring-boot-dependency-tools to support transitive excludes. Transitive excludes are useful with Gradle which considers each dependency independently (see GRADLE-3061). Transitive excludes are supported by parsing the dependency-tree file from spring-boot-versions. See gh-1047 --- .../spring-boot-dependency-tools/pom.xml | 11 +- .../DependenciesWithTransitiveExclusions.java | 131 ++ .../boot/dependency/tools/Dependency.java | 28 +- .../boot/dependency/tools/DependencyNode.java | 82 ++ .../boot/dependency/tools/DependencyTree.java | 159 +++ .../tools/ManagedDependenciesDelegate.java | 6 +- .../dependency/tools/PomDependencies.java | 3 +- ...ndenciesWithTransitiveExclusionsTests.java | 50 + .../dependency/tools/DependencyTreeTests.java | 44 + .../tools/sample-dependency-tree.txt | 1087 +++++++++++++++++ .../test-effective-pom-dependency-tree.txt | 5 + .../dependency/tools/test-effective-pom.xml | 2 + 12 files changed, 1604 insertions(+), 4 deletions(-) create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusions.java create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyNode.java create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyTree.java create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusionsTests.java create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependencyTreeTests.java create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/sample-dependency-tree.txt create mode 100644 spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom-dependency-tree.txt diff --git a/spring-boot-tools/spring-boot-dependency-tools/pom.xml b/spring-boot-tools/spring-boot-dependency-tools/pom.xml index 8fdc4bb5ad..57169bfe5b 100644 --- a/spring-boot-tools/spring-boot-dependency-tools/pom.xml +++ b/spring-boot-tools/spring-boot-dependency-tools/pom.xml @@ -31,7 +31,7 @@ maven-dependency-plugin - copy-effective-pom + copy-resources generate-resources copy @@ -47,6 +47,15 @@ ${generated.pom.dir} effective-pom.xml + + org.springframework.boot + spring-boot-versions + ${project.version} + dependency-tree + true + ${generated.pom.dir} + dependency-tree.txt + diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusions.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusions.java new file mode 100644 index 0000000000..dc90faf8f7 --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusions.java @@ -0,0 +1,131 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.dependency.tools; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.Map; +import java.util.Set; + +import org.springframework.boot.dependency.tools.Dependency.Exclusion; +import org.springframework.boot.dependency.tools.Dependency.ExclusionType; + +/** + * {@link Dependencies} to extend an existing {@link Dependencies} instance with + * transitive {@link Exclusion}s located from a {@link DependencyTree}. + * + * @author Phillip Webb + * @since 1.1.0 + */ +class DependenciesWithTransitiveExclusions extends AbstractDependencies { + + public DependenciesWithTransitiveExclusions(Dependencies dependencies, + DependencyTree tree) { + DependencyBuilder builder = new DependencyBuilder(dependencies); + builder.addTransitiveExcludes(tree); + builder.finish(); + } + + /** + * Builder used to collect the transitive exclusions. + */ + private class DependencyBuilder { + + private Map dependencies; + + public DependencyBuilder(Dependencies dependencies) { + this.dependencies = new LinkedHashMap(); + for (Dependency dependency : dependencies) { + this.dependencies.put(new ArtifactAndGroupId(dependency), + new DependencyAndTransitiveExclusions(dependency)); + } + } + + public void addTransitiveExcludes(DependencyTree tree) { + for (DependencyNode node : tree) { + DependencyAndTransitiveExclusions dependency = this.dependencies + .get(asArtifactAndGroupId(node)); + if (dependency != null) { + for (DependencyNode child : node) { + addTransitiveExcludes(dependency, child); + } + } + } + } + + private void addTransitiveExcludes(DependencyAndTransitiveExclusions dependency, + DependencyNode node) { + DependencyAndTransitiveExclusions exclusions = this.dependencies + .get(asArtifactAndGroupId(node)); + if (exclusions != null) { + dependency.addTransitiveExclusions(exclusions.getSourceDependency()); + } + for (DependencyNode child : node) { + addTransitiveExcludes(dependency, child); + } + } + + private ArtifactAndGroupId asArtifactAndGroupId(DependencyNode node) { + return new ArtifactAndGroupId(node.getGroupId(), node.getArtifactId()); + } + + public void finish() { + for (Map.Entry entry : this.dependencies + .entrySet()) { + add(entry.getKey(), entry.getValue().createNewDependency()); + } + } + + } + + /** + * Holds a {@link Dependency} with additional transitive {@link Exclusion}s. + */ + private static class DependencyAndTransitiveExclusions { + + private Dependency dependency; + + private Set transitiveExclusions = new LinkedHashSet(); + + public DependencyAndTransitiveExclusions(Dependency dependency) { + this.dependency = dependency; + } + + public Dependency getSourceDependency() { + return this.dependency; + } + + public void addTransitiveExclusions(Dependency dependency) { + for (Exclusion exclusion : dependency.getExclusions()) { + this.transitiveExclusions.add(new Exclusion(exclusion.getGroupId(), + exclusion.getArtifactId(), ExclusionType.TRANSITIVE)); + } + } + + public Dependency createNewDependency() { + Set exclusions = new LinkedHashSet(); + exclusions.addAll(this.dependency.getExclusions()); + exclusions.addAll(this.transitiveExclusions); + return new Dependency(this.dependency.getGroupId(), + this.dependency.getArtifactId(), this.dependency.getVersion(), + new ArrayList(exclusions)); + } + + } + +} diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/Dependency.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/Dependency.java index 8b9dd64daa..22a9ad4a54 100644 --- a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/Dependency.java +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/Dependency.java @@ -137,11 +137,15 @@ public final class Dependency { private final String artifactId; - Exclusion(String groupId, String artifactId) { + private final ExclusionType type; + + Exclusion(String groupId, String artifactId, ExclusionType type) { Assert.notNull(groupId, "GroupId must not be null"); Assert.notNull(groupId, "ArtifactId must not be null"); + Assert.notNull(type, "Type must not be null"); this.groupId = groupId; this.artifactId = artifactId; + this.type = type; } /** @@ -158,6 +162,10 @@ public final class Dependency { return this.groupId; } + public ExclusionType getType() { + return this.type; + } + @Override public String toString() { return this.groupId + ":" + this.artifactId; @@ -188,4 +196,22 @@ public final class Dependency { } + public static enum ExclusionType { + + /** + * An exclusion that was specified directly on the dependency. + */ + DIRECT, + + /** + * An exclusion that is was specified on a dependency of this dependency. For + * example if {@literal commons-logging} is directly excluded from + * {@literal spring-core} then it is also transitive exclude on + * {@literal spring-context} (since {@literal spring-context} depends on + * {@literal spring-core}). + */ + TRANSITIVE + + } + } diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyNode.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyNode.java new file mode 100644 index 0000000000..74b380cbac --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyNode.java @@ -0,0 +1,82 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.dependency.tools; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +/** + * A single node in a {@link DependencyTree}. + * + * @author Phillip Webb + * @see DependencyTree + * @since 1.1.0 + */ +class DependencyNode implements Iterable { + + private final String groupId; + + private final String artifactId; + + private final String version; + + private List dependencies; + + DependencyNode(String groupId, String artifactId, String version) { + this.groupId = groupId; + this.artifactId = artifactId; + this.version = version; + this.dependencies = new ArrayList(); + } + + @Override + public Iterator iterator() { + return getDependencies().iterator(); + } + + public String getGroupId() { + return this.groupId; + } + + public String getArtifactId() { + return this.artifactId; + } + + public String getVersion() { + return this.version; + } + + public List getDependencies() { + return Collections.unmodifiableList(this.dependencies); + } + + @Override + public String toString() { + return this.groupId + ":" + this.artifactId + ":" + this.version; + } + + void addDependency(DependencyNode node) { + this.dependencies.add(node); + } + + DependencyNode getLastDependency() { + return this.dependencies.get(this.dependencies.size() - 1); + } + +} diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyTree.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyTree.java new file mode 100644 index 0000000000..085c31bfd7 --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/DependencyTree.java @@ -0,0 +1,159 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.dependency.tools; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayDeque; +import java.util.Arrays; +import java.util.Deque; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Dependency tree information that can be loaded from the output of + * {@literal mvn dependency:tree}. + * + * @author Phillip Webb + * @since 1.1.0 + * @see DependencyNode + */ +class DependencyTree implements Iterable { + + private final DependencyNode root; + + /** + * Create a new {@link DependencyTree} instance for the given input stream. + * @param inputStream input stream containing content from + * {@literal mvn dependency:tree} (the stream will be closed). + */ + public DependencyTree(InputStream inputStream) { + try { + this.root = parse(inputStream); + } + catch (IOException ex) { + throw new IllegalStateException(ex); + } + } + + private DependencyNode parse(InputStream inputStream) throws IOException { + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); + Parser parser = new Parser(); + String line; + while ((line = reader.readLine()) != null) { + parser.append(line); + } + return parser.getRoot(); + } + finally { + inputStream.close(); + } + } + + @Override + public Iterator iterator() { + return getDependencies().iterator(); + } + + /** + * @return the root node for the tree. + */ + public DependencyNode getRoot() { + return this.root; + } + + /** + * @return the dependencies of the root node. + */ + public List getDependencies() { + return this.root.getDependencies(); + } + + /** + * Return the node at the specified index. + * @param index the index (multiple indexes can be used to traverse the tree) + * @return the node at the specified index + */ + public DependencyNode get(int... index) { + DependencyNode rtn = this.root; + for (int i : index) { + rtn = rtn.getDependencies().get(i); + } + return rtn; + } + + private static class Parser { + + private static final int INDENT = 3; + + private static final Set PREFIX_CHARS = new HashSet( + Arrays.asList(' ', '+', '-', '\\', '|')); + + private static final Pattern LINE_PATTERN = Pattern + .compile("[(]?([^:]*):([^:]*):([^:]*):([^:\\s]*)"); + + private Deque stack = new ArrayDeque(); + + public void append(String line) { + int depth = getDepth(line); + String data = line.substring(depth * INDENT); + if (depth == 0) { + this.stack.push(createNode(data)); + } + else { + while (depth < this.stack.size()) { + this.stack.pop(); + } + if (depth > this.stack.size()) { + this.stack.push(this.stack.peek().getLastDependency()); + } + this.stack.peek().addDependency(createNode(data)); + } + } + + private int getDepth(String line) { + for (int i = 0; i < line.length(); i++) { + if (!Parser.PREFIX_CHARS.contains(line.charAt(i))) { + return i / INDENT; + } + } + return 0; + } + + private DependencyNode createNode(String line) { + Matcher matcher = LINE_PATTERN.matcher(line); + if (!matcher.find()) { + throw new IllegalStateException("Unable to parese line " + line); + } + return new DependencyNode(matcher.group(1), matcher.group(2), + matcher.group(4)); + } + + public DependencyNode getRoot() { + return this.stack.getLast(); + } + + } + +} diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/ManagedDependenciesDelegate.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/ManagedDependenciesDelegate.java index 770fb7ccc8..4b802e244c 100644 --- a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/ManagedDependenciesDelegate.java +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/ManagedDependenciesDelegate.java @@ -57,7 +57,11 @@ class ManagedDependenciesDelegate extends AbstractDependencies { private static Dependencies getSpringBootDependencies() { if (springBootDependencies == null) { - springBootDependencies = new PomDependencies(getResource("effective-pom.xml")); + Dependencies dependencies = new PomDependencies( + getResource("effective-pom.xml")); + DependencyTree tree = new DependencyTree(getResource("dependency-tree.txt")); + dependencies = new DependenciesWithTransitiveExclusions(dependencies, tree); + springBootDependencies = dependencies; } return springBootDependencies; } diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/PomDependencies.java b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/PomDependencies.java index 2bfa3920f7..2661de56d2 100644 --- a/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/PomDependencies.java +++ b/spring-boot-tools/spring-boot-dependency-tools/src/main/java/org/springframework/boot/dependency/tools/PomDependencies.java @@ -25,6 +25,7 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.springframework.boot.dependency.tools.Dependency.Exclusion; +import org.springframework.boot.dependency.tools.Dependency.ExclusionType; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -118,7 +119,7 @@ public class PomDependencies extends AbstractDependencies { private Exclusion createExclusion(Element element) { String groupId = getTextContent(element, "groupId"); String artifactId = getTextContent(element, "artifactId"); - return new Exclusion(groupId, artifactId); + return new Exclusion(groupId, artifactId, ExclusionType.DIRECT); } private String getTextContent(Element element, String tagName) { diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusionsTests.java b/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusionsTests.java new file mode 100644 index 0000000000..921a50ae30 --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependenciesWithTransitiveExclusionsTests.java @@ -0,0 +1,50 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.dependency.tools; + +import org.junit.Test; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; + +/** + * Tests for {@link DependenciesWithTransitiveExclusions}. + * + * @author Phillip Webb + */ +public class DependenciesWithTransitiveExclusionsTests { + + @Test + public void findsTransitiveExclusions() throws Exception { + Dependencies source = new PomDependencies(getClass().getResourceAsStream( + "test-effective-pom.xml")); + DependencyTree tree = new DependencyTree(getClass().getResourceAsStream( + "test-effective-pom-dependency-tree.txt")); + DependenciesWithTransitiveExclusions dependencies = new DependenciesWithTransitiveExclusions( + source, tree); + assertExcludes(dependencies, "sample01", "[org.exclude:exclude01]"); + assertExcludes(source, "sample02", "[]"); + assertExcludes(dependencies, "sample02", "[org.exclude:exclude01]"); + } + + private void assertExcludes(Dependencies dependencies, String artifactId, + String expected) { + Dependency dependency = dependencies.find("org.sample", artifactId); + assertThat(dependency.getExclusions().toString(), equalTo(expected)); + } + +} diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependencyTreeTests.java b/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependencyTreeTests.java new file mode 100644 index 0000000000..9ae675c85d --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/test/java/org/springframework/boot/dependency/tools/DependencyTreeTests.java @@ -0,0 +1,44 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.dependency.tools; + +import org.junit.Test; +import org.springframework.boot.dependency.tools.DependencyTree; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; + +/** + * Tests for {@link DependencyTree}. + * + * @author Phillip Webb + */ +public class DependencyTreeTests { + + @Test + public void parse() throws Exception { + DependencyTree tree = new DependencyTree(getClass().getResourceAsStream( + "sample-dependency-tree.txt")); + assertThat(tree.getRoot().toString(), equalTo("org.springframework.boot:" + + "spring-boot-versions-dependency-tree:1.1.0.BUILD-SNAPSHOT")); + assertThat(tree.getDependencies().size(), equalTo(204)); + assertThat(tree.get(0, 1).toString(), equalTo("org.slf4j:slf4j-api:1.7.6")); + assertThat(tree.get(203).toString(), equalTo("org.springframework.security:" + + "spring-security-web:3.2.4.RELEASE")); + } + +} diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/sample-dependency-tree.txt b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/sample-dependency-tree.txt new file mode 100644 index 0000000000..fd8893bc97 --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/sample-dependency-tree.txt @@ -0,0 +1,1087 @@ +org.springframework.boot:spring-boot-versions-dependency-tree:pom:1.1.0.BUILD-SNAPSHOT ++- ch.qos.logback:logback-classic:jar:1.1.2:compile +| +- ch.qos.logback:logback-core:jar:1.1.2:compile +| \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.7) ++- com.codahale.metrics:metrics-graphite:jar:3.0.2:compile +| +- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) ++- com.codahale.metrics:metrics-ganglia:jar:3.0.2:compile +| +- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| +- info.ganglia.gmetric4j:gmetric4j:jar:1.0.3:compile +| | \- org.acplt:oncrpc:jar:1.0.7:compile +| \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) ++- com.codahale.metrics:metrics-core:jar:3.0.2:compile +| \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) ++- com.codahale.metrics:metrics-servlets:jar:3.0.2:compile +| +- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| +- com.codahale.metrics:metrics-healthchecks:jar:3.0.2:compile +| | \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- com.codahale.metrics:metrics-json:jar:3.0.2:compile +| | +- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| | +- (com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile - omitted for duplicate) +| | \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- com.codahale.metrics:metrics-jvm:jar:3.0.2:compile +| | +- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| | \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.2.2:compile - omitted for conflict with 2.3.3) +| \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) ++- org.codehaus.janino:janino:jar:2.6.1:compile +| \- org.codehaus.janino:commons-compiler:jar:2.6.1:compile ++- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.3:compile ++- com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile ++- com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile +| +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile - omitted for conflict with 2.3.3) +| \- (com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile - omitted for duplicate) ++- com.fasterxml.jackson.datatype:jackson-datatype-joda:jar:2.3.3:compile +| +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile - omitted for conflict with 2.3.3) +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile - omitted for duplicate) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile - omitted for duplicate) +| \- (joda-time:joda-time:jar:2.1:compile - omitted for conflict with 2.3) ++- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.3.3:compile +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile - omitted for duplicate) +| \- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile - omitted for duplicate) ++- com.gemstone.gemfire:gemfire:jar:7.0.2:compile +| \- (antlr:antlr:jar:2.7.7:compile - scope updated from runtime; omitted for duplicate) ++- com.h2database:h2:jar:1.3.175:compile ++- com.zaxxer:HikariCP:jar:1.3.8:compile +| +- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| \- (org.javassist:javassist:jar:3.18.1-GA:compile - omitted for duplicate) ++- commons-beanutils:commons-beanutils:jar:1.9.2:compile +| \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate) ++- commons-collections:commons-collections:jar:3.2.1:compile ++- commons-dbcp:commons-dbcp:jar:1.4:compile +| \- (commons-pool:commons-pool:jar:1.5.4:compile - omitted for conflict with 1.6) ++- commons-digester:commons-digester:jar:2.1:compile +| \- (commons-beanutils:commons-beanutils:jar:1.8.3:compile - omitted for conflict with 1.9.2) ++- commons-pool:commons-pool:jar:1.6:compile ++- javax.jms:jms-api:jar:1.1-rev-1:compile ++- javax.servlet:javax.servlet-api:jar:3.0.1:compile ++- javax.servlet:jstl:jar:1.2:compile ++- joda-time:joda-time:jar:2.3:compile ++- junit:junit:jar:4.11:compile +| \- (org.hamcrest:hamcrest-core:jar:1.3:compile - omitted for duplicate) ++- log4j:log4j:jar:1.2.17:compile ++- mysql:mysql-connector-java:jar:5.1.30:compile ++- nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:jar:1.2.4:compile +| \- (org.thymeleaf:thymeleaf:jar:2.1.2.RELEASE:compile - omitted for conflict with 2.1.3.RELEASE) ++- org.apache.activemq:activemq-client:jar:5.9.1:compile +| +- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile +| +- org.fusesource.hawtbuf:hawtbuf:jar:1.9:compile +| \- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:compile ++- org.apache.activemq:activemq-broker:jar:5.9.1:compile +| +- (org.apache.activemq:activemq-client:jar:5.9.1:compile - omitted for duplicate) +| \- org.apache.activemq:activemq-openwire-legacy:jar:5.9.1:compile +| \- (org.apache.activemq:activemq-client:jar:5.9.1:compile - omitted for duplicate) ++- org.apache.activemq:activemq-pool:jar:5.9.1:compile +| +- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- org.apache.activemq:activemq-jms-pool:jar:5.9.1:compile +| | +- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| | +- (org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile - omitted for duplicate) +| | +- (org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec:jar:1.0.1:compile - omitted for duplicate) +| | \- (commons-pool:commons-pool:jar:1.6:compile - omitted for duplicate) +| +- (org.apache.activemq:activemq-client:jar:5.9.1:compile - omitted for duplicate) +| +- org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec:jar:1.0.1:compile +| \- (commons-pool:commons-pool:jar:1.6:compile - omitted for duplicate) ++- org.apache.commons:commons-pool2:jar:2.2:compile ++- org.apache.httpcomponents:httpclient:jar:4.3.3:compile +| +- org.apache.httpcomponents:httpcore:jar:4.3.2:compile +| +- commons-logging:commons-logging:jar:1.1.3:compile +| \- commons-codec:commons-codec:jar:1.6:compile ++- org.apache.httpcomponents:httpmime:jar:4.3.3:compile +| \- (org.apache.httpcomponents:httpclient:jar:4.3.3:compile - omitted for duplicate) ++- org.apache.httpcomponents:httpasyncclient:jar:4.0.1:compile +| +- (org.apache.httpcomponents:httpcore:jar:4.3.2:compile - omitted for duplicate) +| +- org.apache.httpcomponents:httpcore-nio:jar:4.3.2:compile +| | \- (org.apache.httpcomponents:httpcore:jar:4.3.2:compile - omitted for duplicate) +| +- (org.apache.httpcomponents:httpclient:jar:4.3.2:compile - omitted for conflict with 4.3.3) +| \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate) ++- org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.54:compile ++- org.apache.tomcat.embed:tomcat-embed-el:jar:7.0.54:compile ++- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:7.0.54:compile ++- org.apache.tomcat.embed:tomcat-embed-jasper:jar:7.0.54:compile +| +- (org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.54:compile - omitted for duplicate) +| +- (org.apache.tomcat.embed:tomcat-embed-el:jar:7.0.54:compile - omitted for duplicate) +| \- org.eclipse.jdt.core.compiler:ecj:jar:P20140317-1600:compile ++- org.apache.tomcat.embed:tomcat-embed-websocket:jar:7.0.54:compile +| \- (org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.54:compile - omitted for duplicate) ++- org.apache.tomcat:tomcat-jdbc:jar:7.0.54:compile +| \- org.apache.tomcat:tomcat-juli:jar:7.0.54:compile ++- org.apache.tomcat:tomcat-jsp-api:jar:7.0.54:compile +| +- org.apache.tomcat:tomcat-el-api:jar:7.0.54:compile +| \- org.apache.tomcat:tomcat-servlet-api:jar:7.0.54:compile ++- org.apache.velocity:velocity:jar:1.7:compile +| +- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate) +| \- commons-lang:commons-lang:jar:2.4:compile ++- org.apache.velocity:velocity-tools:jar:2.0:compile +| +- (commons-beanutils:commons-beanutils:jar:1.7.0:compile - omitted for conflict with 1.9.2) +| +- (commons-digester:commons-digester:jar:1.8:compile - omitted for conflict with 2.1) +| +- commons-chain:commons-chain:jar:1.1:compile +| | +- (commons-beanutils:commons-beanutils:jar:1.7.0:compile - omitted for conflict with 1.9.2) +| | +- (commons-digester:commons-digester:jar:1.6:compile - omitted for conflict with 2.1) +| | \- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.3) +| +- (commons-collections:commons-collections:jar:3.2:compile - omitted for conflict with 3.2.1) +| +- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3) +| +- commons-validator:commons-validator:jar:1.3.1:compile +| | +- (commons-beanutils:commons-beanutils:jar:1.7.0:compile - omitted for conflict with 1.9.2) +| | +- (commons-digester:commons-digester:jar:1.6:compile - omitted for conflict with 2.1) +| | \- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for conflict with 1.1.3) +| +- dom4j:dom4j:jar:1.1:compile +| +- oro:oro:jar:2.0.8:compile +| +- sslext:sslext:jar:1.2-0:compile +| +- org.apache.struts:struts-core:jar:1.3.8:compile +| | +- antlr:antlr:jar:2.7.7:compile +| | +- (commons-beanutils:commons-beanutils:jar:1.7.0:compile - omitted for conflict with 1.9.2) +| | +- (commons-chain:commons-chain:jar:1.1:compile - omitted for duplicate) +| | +- (commons-digester:commons-digester:jar:1.8:compile - omitted for conflict with 2.1) +| | +- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for conflict with 1.1.3) +| | +- (commons-validator:commons-validator:jar:1.3.1:compile - omitted for duplicate) +| | \- (oro:oro:jar:2.0.8:compile - omitted for duplicate) +| +- org.apache.struts:struts-taglib:jar:1.3.8:compile +| | \- (org.apache.struts:struts-core:jar:1.3.8:compile - omitted for duplicate) +| +- org.apache.struts:struts-tiles:jar:1.3.8:compile +| | \- (org.apache.struts:struts-core:jar:1.3.8:compile - omitted for duplicate) +| \- (org.apache.velocity:velocity:jar:1.6.2:compile - omitted for conflict with 1.7) ++- org.aspectj:aspectjrt:jar:1.8.0:compile ++- org.aspectj:aspectjtools:jar:1.8.0:compile ++- org.aspectj:aspectjweaver:jar:1.8.0:compile ++- org.codehaus.groovy:groovy:jar:2.3.2:compile ++- org.codehaus.groovy:groovy-all:jar:2.3.2:compile ++- org.codehaus.groovy:groovy-ant:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-groovydoc:jar:2.3.2:compile - omitted for duplicate) +| +- org.apache.ant:ant-antlr:jar:1.9.3:runtime +| +- org.apache.ant:ant:jar:1.9.3:compile +| | \- org.apache.ant:ant-launcher:jar:1.9.3:compile +| +- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) +| +- (org.apache.ant:ant-launcher:jar:1.9.3:compile - scope updated from runtime; omitted for duplicate) +| \- org.apache.ant:ant-junit:jar:1.9.3:runtime +| \- (org.apache.ant:ant:jar:1.9.3:runtime - omitted for duplicate) ++- org.codehaus.groovy:groovy-bsf:jar:2.3.2:compile +| +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3) +| +- bsf:bsf:jar:2.4.0:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-console:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-swing:jar:2.3.2:compile - omitted for duplicate) +| +- (org.codehaus.groovy:groovy-templates:jar:2.3.2:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-docgenerator:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-templates:jar:2.3.2:compile - omitted for duplicate) +| +- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) +| \- com.thoughtworks.qdox:qdox:jar:1.12.1:compile ++- org.codehaus.groovy:groovy-groovydoc:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-templates:jar:2.3.2:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-groovysh:jar:2.3.2:compile +| +- jline:jline:jar:2.11:compile +| +- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy-console:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-jmx:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-json:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-jsr223:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-nio:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-servlet:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-xml:jar:2.3.2:compile - omitted for duplicate) +| +- (org.codehaus.groovy:groovy-templates:jar:2.3.2:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-sql:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-swing:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-templates:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy-xml:jar:2.3.2:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-test:jar:2.3.2:compile +| +- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) +| \- (junit:junit:jar:4.11:compile - omitted for duplicate) ++- org.codehaus.groovy:groovy-testng:jar:2.3.2:compile +| +- com.beust:jcommander:jar:1.35:compile +| +- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) +| \- org.testng:testng:jar:6.8.8:runtime ++- org.codehaus.groovy:groovy-xml:jar:2.3.2:compile +| \- (org.codehaus.groovy:groovy:jar:2.3.2:compile - omitted for duplicate) ++- org.crashub:crash.cli:jar:1.3.0-cr4:compile ++- org.crashub:crash.connectors.ssh:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.shell:jar:1.3.0-cr4:compile - omitted for duplicate) +| +- org.apache.sshd:sshd-core:jar:0.11.0:compile +| | \- (org.apache.mina:mina-core:jar:2.0.7:compile - omitted for duplicate) +| +- org.apache.sshd:sshd-pam:jar:0.11.0:compile +| | +- (org.apache.sshd:sshd-core:jar:0.11.0:compile - omitted for duplicate) +| | \- net.sf.jpam:jpam:jar:1.1:compile +| | \- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for conflict with 1.1.3) +| +- org.bouncycastle:bcprov-jdk15on:jar:1.49:compile +| +- org.bouncycastle:bcpkix-jdk15on:jar:1.49:compile +| | \- (org.bouncycastle:bcprov-jdk15on:jar:1.49:compile - omitted for duplicate) +| \- org.apache.mina:mina-core:jar:2.0.7:compile +| \- (org.slf4j:slf4j-api:jar:1.6.6:compile - omitted for conflict with 1.7.6) ++- org.crashub:crash.connectors.telnet:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.shell:jar:1.3.0-cr4:compile - omitted for duplicate) +| \- net.wimpi:telnetd-x:jar:2.1.1:compile +| +- (log4j:log4j:jar:1.2.9:compile - omitted for conflict with 1.2.17) +| \- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3) ++- org.crashub:crash.embed.spring:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.shell:jar:1.3.0-cr4:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:3.1.1.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-web:jar:3.1.1.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.1.1.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.crashub:crash.plugins.cron:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.shell:jar:1.3.0-cr4:compile - omitted for duplicate) +| \- it.sauronsoftware.cron4j:cron4j:jar:2.2.5:compile ++- org.crashub:crash.plugins.mail:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.shell:jar:1.3.0-cr4:compile - omitted for duplicate) +| \- javax.mail:mail:jar:1.4:compile +| \- javax.activation:activation:jar:1.1:compile ++- org.crashub:crash.shell:jar:1.3.0-cr4:compile +| +- (org.crashub:crash.cli:jar:1.3.0-cr4:compile - omitted for duplicate) +| \- (org.codehaus.groovy:groovy-all:jar:1.8.9:compile - omitted for conflict with 2.3.2) ++- org.eclipse.jetty:jetty-annotations:jar:8.1.15.v20140411:compile +| +- org.eclipse.jetty:jetty-plus:jar:8.1.15.v20140411:compile +| | +- org.eclipse.jetty.orbit:javax.transaction:jar:1.1.1.v201105210645:compile +| | +- (org.eclipse.jetty:jetty-webapp:jar:8.1.15.v20140411:compile - omitted for duplicate) +| | \- org.eclipse.jetty:jetty-jndi:jar:8.1.15.v20140411:compile +| | +- org.eclipse.jetty:jetty-server:jar:8.1.15.v20140411:compile +| | | +- (org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile - omitted for duplicate) +| | | +- org.eclipse.jetty:jetty-continuation:jar:8.1.15.v20140411:compile +| | | \- org.eclipse.jetty:jetty-http:jar:8.1.15.v20140411:compile +| | | \- org.eclipse.jetty:jetty-io:jar:8.1.15.v20140411:compile +| | | \- (org.eclipse.jetty:jetty-util:jar:8.1.15.v20140411:compile - omitted for duplicate) +| | \- org.eclipse.jetty.orbit:javax.mail.glassfish:jar:1.4.1.v201005082020:compile +| | \- org.eclipse.jetty.orbit:javax.activation:jar:1.1.0.v201105071233:compile +| +- (org.eclipse.jetty:jetty-webapp:jar:8.1.15.v20140411:compile - omitted for duplicate) +| +- org.eclipse.jetty.orbit:javax.annotation:jar:1.1.0.v201108011116:compile +| \- org.eclipse.jetty.orbit:org.objectweb.asm:jar:3.1.0.v200803061910:compile ++- org.eclipse.jetty:jetty-jsp:jar:8.1.15.v20140411:compile +| +- (org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile - omitted for duplicate) +| +- org.eclipse.jetty.orbit:org.apache.jasper.glassfish:jar:2.2.2.v201112011158:compile +| | \- (org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile - omitted for duplicate) +| +- org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile +| | \- (org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.1.0.v201105211820:compile - omitted for conflict with 2.2.0.v201112011158) +| +- org.eclipse.jetty.orbit:org.apache.taglibs.standard.glassfish:jar:1.2.0.v201112081803:compile +| | \- (org.eclipse.jetty.orbit:javax.servlet.jsp.jstl:jar:1.2.0.v201105211821:compile - omitted for duplicate) +| +- org.eclipse.jetty.orbit:javax.el:jar:2.2.0.v201108011116:compile +| +- org.eclipse.jetty.orbit:com.sun.el:jar:2.2.0.v201108011116:compile +| \- org.eclipse.jetty.orbit:org.eclipse.jdt.core:jar:3.7.1:compile ++- org.eclipse.jetty:jetty-webapp:jar:8.1.15.v20140411:compile +| +- org.eclipse.jetty:jetty-xml:jar:8.1.15.v20140411:compile +| | \- (org.eclipse.jetty:jetty-util:jar:8.1.15.v20140411:compile - omitted for duplicate) +| \- org.eclipse.jetty:jetty-servlet:jar:8.1.15.v20140411:compile +| \- org.eclipse.jetty:jetty-security:jar:8.1.15.v20140411:compile +| \- (org.eclipse.jetty:jetty-server:jar:8.1.15.v20140411:compile - omitted for duplicate) ++- org.eclipse.jetty:jetty-util:jar:8.1.15.v20140411:compile ++- org.eclipse.jetty.orbit:javax.servlet.jsp:jar:2.2.0.v201112011158:compile +| \- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile ++- org.freemarker:freemarker:jar:2.3.20:compile ++- org.flywaydb:flyway-core:jar:3.0:compile ++- org.hamcrest:hamcrest-core:jar:1.3:compile ++- org.hamcrest:hamcrest-library:jar:1.3:compile +| \- (org.hamcrest:hamcrest-core:jar:1.3:compile - omitted for duplicate) ++- org.hibernate:hibernate-entitymanager:jar:4.3.1.Final:compile +| +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile +| +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile +| +- org.hibernate:hibernate-core:jar:4.3.1.Final:compile +| | +- (org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile - omitted for duplicate) +| | +- (org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile - omitted for duplicate) +| | +- (org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile - omitted for duplicate) +| | +- (dom4j:dom4j:jar:1.6.1:compile - omitted for conflict with 1.1) +| | +- (org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile - omitted for duplicate) +| | +- (org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile - omitted for duplicate) +| | +- (org.javassist:javassist:jar:3.18.1-GA:compile - omitted for duplicate) +| | +- (antlr:antlr:jar:2.7.7:compile - omitted for duplicate) +| | \- org.jboss:jandex:jar:1.1.0.Final:compile +| +- (dom4j:dom4j:jar:1.6.1:compile - omitted for conflict with 1.1) +| +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile +| | +- (org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile - omitted for duplicate) +| | \- (org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile - omitted for duplicate) +| +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile +| +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile +| \- (org.javassist:javassist:jar:3.18.1-GA:compile - omitted for duplicate) ++- org.hibernate:hibernate-validator:jar:5.0.3.Final:compile +| +- javax.validation:validation-api:jar:1.1.0.Final:compile +| +- (org.jboss.logging:jboss-logging:jar:3.1.1.GA:compile - omitted for conflict with 3.1.3.GA) +| \- com.fasterxml:classmate:jar:1.0.0:compile ++- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile ++- org.hornetq:hornetq-jms-server:jar:2.4.1.Final:compile +| +- org.hornetq:hornetq-core-client:jar:2.4.1.Final:compile +| | +- org.jgroups:jgroups:jar:3.3.4.Final:compile +| | +- org.hornetq:hornetq-commons:jar:2.4.1.Final:compile +| | | +- (org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile - omitted for conflict with 3.1.3.GA) +| | | \- (io.netty:netty-all:jar:4.0.13.Final:compile - omitted for duplicate) +| | +- org.hornetq:hornetq-journal:jar:2.4.1.Final:compile +| | | +- (org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile - omitted for conflict with 3.1.3.GA) +| | | +- (org.hornetq:hornetq-commons:jar:2.4.1.Final:compile - omitted for duplicate) +| | | \- org.hornetq:hornetq-native:jar:2.4.1.Final:compile +| | | \- (org.hornetq:hornetq-commons:jar:2.4.1.Final:compile - omitted for duplicate) +| | \- (io.netty:netty-all:jar:4.0.13.Final:compile - omitted for conflict with 4.0.19.Final) +| +- (org.hornetq:hornetq-jms-client:jar:2.4.1.Final:compile - omitted for duplicate) +| +- org.hornetq:hornetq-server:jar:2.4.1.Final:compile +| | +- (org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile - omitted for conflict with 3.1.3.GA) +| | +- (org.hornetq:hornetq-commons:jar:2.4.1.Final:compile - omitted for duplicate) +| | +- (org.hornetq:hornetq-journal:jar:2.4.1.Final:compile - omitted for duplicate) +| | +- (org.hornetq:hornetq-core-client:jar:2.4.1.Final:compile - omitted for duplicate) +| | \- (io.netty:netty-all:jar:4.0.13.Final:compile - omitted for duplicate) +| +- org.jboss.spec.javax.jms:jboss-jms-api_2.0_spec:jar:1.0.0.Final:compile +| +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile +| +- org.jboss:jboss-transaction-spi:jar:7.0.0.Final:compile +| | +- org.jboss.spec.javax.resource:jboss-connector-api_1.5_spec:jar:1.0.0.Final:compile +| | | \- (org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile - omitted for duplicate) +| | \- (org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.1.Beta1:compile - omitted for conflict with 1.0.0.Final) +| \- org.jboss.naming:jnpserver:jar:5.0.3.GA:compile +| \- org.jboss:jboss-common-core:jar:2.2.10.GA:compile ++- org.hornetq:hornetq-jms-client:jar:2.4.1.Final:compile +| +- (org.hornetq:hornetq-core-client:jar:2.4.1.Final:compile - omitted for duplicate) +| +- (org.jboss.spec.javax.jms:jboss-jms-api_2.0_spec:jar:1.0.0.Final:compile - omitted for duplicate) +| \- javax.inject:javax.inject:jar:1:compile ++- org.hsqldb:hsqldb:jar:2.3.2:compile ++- org.javassist:javassist:jar:3.18.1-GA:compile ++- org.jolokia:jolokia-core:jar:1.2.1:compile +| \- com.googlecode.json-simple:json-simple:jar:1.1:compile ++- org.liquibase:liquibase-core:jar:3.0.8:compile +| \- (org.yaml:snakeyaml:jar:1.13:compile - omitted for duplicate) ++- org.mongodb:mongo-java-driver:jar:2.12.1:compile ++- org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile +| +- com.goldmansachs:gs-collections:jar:5.0.0:compile +| | \- com.goldmansachs:gs-collections-api:jar:5.0.0:compile +| +- com.lmax:disruptor:jar:3.2.1:compile +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.projectreactor:reactor-groovy:jar:1.1.2.RELEASE:compile +| +- (org.codehaus.groovy:groovy-all:jar:2.3.2:compile - omitted for duplicate) +| +- (org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.projectreactor:reactor-groovy-extensions:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.projectreactor:reactor-groovy-extensions:jar:1.1.2.RELEASE:compile +| +- (org.codehaus.groovy:groovy-all:jar:2.3.2:compile - omitted for duplicate) +| +- (org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.projectreactor:reactor-logback:jar:1.1.2.RELEASE:compile +| +- (ch.qos.logback:logback-classic:jar:1.1.2:compile - omitted for duplicate) +| +- commons-cli:commons-cli:jar:1.2:compile +| +- net.openhft:chronicle:jar:2.0.3:compile +| | +- net.openhft:lang:jar:6.1.4:compile +| | | \- (org.kohsuke.jetbrains:annotations:jar:9.0:compile - omitted for duplicate) +| | \- org.kohsuke.jetbrains:annotations:jar:9.0:compile +| +- (org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.projectreactor:reactor-net:jar:1.1.2.RELEASE:compile +| +- io.netty:netty-all:jar:4.0.19.Final:compile +| +- (org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.projectreactor.spring:reactor-spring-core:jar:1.1.2.RELEASE:compile +| +- (org.projectreactor:reactor-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) +| +- (org.springframework:spring-beans:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-core:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| \- (org.springframework:spring-expression:jar:4.0.3.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.projectreactor.spring:reactor-spring-context:jar:1.1.2.RELEASE:compile +| +- com.jayway.jsonpath:json-path:jar:0.9.0:compile +| | +- net.minidev:json-smart:jar:1.2:compile +| | \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.6) +| +- (org.projectreactor.spring:reactor-spring-core:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) +| \- (org.springframework:spring-context-support:jar:4.0.3.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.projectreactor.spring:reactor-spring-messaging:jar:1.1.2.RELEASE:compile +| +- (org.projectreactor.spring:reactor-spring-context:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.projectreactor:reactor-net:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) +| \- (org.springframework:spring-messaging:jar:4.0.3.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.projectreactor.spring:reactor-spring-webmvc:jar:1.1.2.RELEASE:compile +| +- (org.projectreactor.spring:reactor-spring-context:jar:1.1.2.RELEASE:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) +| \- (org.springframework:spring-webmvc:jar:4.0.3.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.mockito:mockito-core:jar:1.9.5:compile +| +- (org.hamcrest:hamcrest-core:jar:1.1:compile - omitted for conflict with 1.3) +| \- org.objenesis:objenesis:jar:1.0:compile ++- org.slf4j:jcl-over-slf4j:jar:1.7.7:compile +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.slf4j:log4j-over-slf4j:jar:1.7.7:compile +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.6) ++- org.slf4j:slf4j-api:jar:1.7.7:compile ++- org.slf4j:jul-to-slf4j:jar:1.7.7:compile +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) ++- org.slf4j:slf4j-jdk14:jar:1.7.7:compile +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) ++- org.slf4j:slf4j-log4j12:jar:1.7.7:compile +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (log4j:log4j:jar:1.2.17:compile - omitted for duplicate) ++- org.apache.solr:solr-solrj:jar:4.7.2:compile +| +- commons-io:commons-io:jar:2.1:compile +| +- (log4j:log4j:jar:1.2.16:compile - omitted for conflict with 1.2.17) +| +- (org.apache.httpcomponents:httpclient:jar:4.3.1:compile - omitted for conflict with 4.3.3) +| +- (org.apache.httpcomponents:httpcore:jar:4.3:compile - omitted for conflict with 4.3.2) +| +- (org.apache.httpcomponents:httpmime:jar:4.3.1:compile - omitted for conflict with 4.3.3) +| +- org.apache.zookeeper:zookeeper:jar:3.4.5:compile +| +- org.codehaus.woodstox:wstx-asl:jar:3.2.7:compile +| +- org.noggit:noggit:jar:0.5:compile +| \- (org.slf4j:slf4j-api:jar:1.6.6:compile - omitted for conflict with 1.7.7) ++- org.spockframework:spock-core:jar:0.7-groovy-2.0:compile +| +- junit:junit-dep:jar:4.10:compile +| | \- (org.hamcrest:hamcrest-core:jar:1.1:compile - omitted for conflict with 1.3) +| \- (org.hamcrest:hamcrest-core:jar:1.3:compile - omitted for duplicate) ++- org.springframework:spring-core:jar:4.0.5.RELEASE:compile +| \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate) ++- org.springframework:springloaded:jar:1.2.0.RELEASE:compile ++- org.springframework.amqp:spring-amqp:jar:1.3.4.RELEASE:compile +| \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.amqp:spring-erlang:jar:1.3.4.RELEASE:compile +| +- org.erlang.otp:jinterface:jar:1.5.6:compile +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| \- (commons-io:commons-io:jar:2.4:compile - omitted for conflict with 2.1) ++- org.springframework.amqp:spring-rabbit:jar:1.3.4.RELEASE:compile +| +- (org.springframework:spring-tx:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- org.springframework.retry:spring-retry:jar:1.1.0.RELEASE:compile +| | \- (org.springframework:spring-context:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework.amqp:spring-amqp:jar:1.3.4.RELEASE:compile - omitted for duplicate) +| \- com.rabbitmq:amqp-client:jar:3.3.1:compile ++- org.springframework.batch:spring-batch-core:jar:3.0.0.RELEASE:compile +| +- com.ibm.jbatch:com.ibm.jbatch-tck-spi:jar:1.0:compile +| | \- javax.batch:javax.batch-api:jar:1.0:compile +| +- com.thoughtworks.xstream:xstream:jar:1.4.7:compile +| | +- xmlpull:xmlpull:jar:1.1.3.1:compile +| | \- xpp3:xpp3_min:jar:1.1.4c:compile +| +- org.codehaus.jettison:jettison:jar:1.2:compile +| +- (org.springframework.batch:spring-batch-infrastructure:jar:3.0.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.2.8.RELEASE) ++- org.springframework.batch:spring-batch-infrastructure:jar:3.0.0.RELEASE:compile +| +- (org.springframework.retry:spring-retry:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework.batch:spring-batch-integration:jar:3.0.0.RELEASE:compile +| +- (org.springframework.batch:spring-batch-core:jar:3.0.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.1.RELEASE:compile - omitted for conflict with 4.0.2.RELEASE) +| +- (org.springframework.retry:spring-retry:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-messaging:jar:4.0.5.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE) +| \- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.2.8.RELEASE) ++- org.springframework.batch:spring-batch-test:jar:3.0.0.RELEASE:compile +| +- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate) +| +- (commons-io:commons-io:jar:2.4:compile - omitted for conflict with 2.1) +| +- (junit:junit:jar:4.10:compile - omitted for conflict with 4.11) +| +- org.hamcrest:hamcrest-all:jar:1.3:compile +| +- (org.springframework.batch:spring-batch-core:jar:3.0.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-jdbc:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-test:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework.hateoas:spring-hateoas:jar:0.12.0.RELEASE:compile +| +- (org.springframework:spring-aop:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-web:jar:3.2.9.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework:spring-webmvc:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE) +| +- (org.objenesis:objenesis:jar:2.1:compile - omitted for conflict with 1.0) +| \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-http:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-webmvc:jar:4.0.5.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE) +| +- net.java.dev.rome:rome-fetcher:jar:1.0.0:compile +| | +- jdom:jdom:jar:1.0:compile +| | +- xerces:xercesImpl:jar:2.4.0:compile +| | +- (net.java.dev.rome:rome:jar:1.0.0:compile - omitted for duplicate) +| | +- commons-httpclient:commons-httpclient:jar:3.0.1:compile +| | | +- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.3) +| | | \- (commons-codec:commons-codec:jar:1.2:compile - omitted for conflict with 1.6) +| | +- (commons-logging:commons-logging:jar:1.0.4:compile - omitted for conflict with 1.1.3) +| | \- commons-logging:commons-logging-api:jar:1.0.4:compile +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for conflict with 4.0.1.RELEASE) ++- org.springframework.mobile:spring-mobile-device:jar:1.1.2.RELEASE:compile +| +- (org.springframework:spring-webmvc:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE) +| \- (org.springframework:spring-web:jar:3.2.9.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) ++- org.springframework.security:spring-security-jwt:jar:1.0.2.RELEASE:compile +| +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile +| | \- (org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile - omitted for conflict with 1.9.12) +| \- (org.bouncycastle:bcpkix-jdk15on:jar:1.47:compile - omitted for conflict with 1.49) ++- org.springframework.social:spring-social-config:jar:1.1.0.RELEASE:compile +| +- (org.springframework.social:spring-social-web:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile +| \- (org.springframework:spring-web:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) ++- org.springframework.social:spring-social-security:jar:1.1.0.RELEASE:compile +| +- (org.springframework.social:spring-social-web:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-web:jar:3.2.3.RELEASE:compile - omitted for conflict with 3.2.4.RELEASE) +| +- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-web:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| \- (org.springframework:spring-webmvc:jar:4.0.3.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-web:jar:1.1.0.RELEASE:compile +| +- (javax.inject:javax.inject:jar:1:compile - omitted for duplicate) +| +- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-web:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| \- (org.springframework:spring-webmvc:jar:4.0.3.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-facebook:jar:1.1.1.RELEASE:compile +| +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (org.springframework.social:spring-social-config:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| \- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-facebook-web:jar:1.1.1.RELEASE:compile +| +- (org.springframework:spring-web:jar:4.0.3.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| +- (org.springframework.social:spring-social-facebook:jar:1.1.1.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-webmvc:jar:4.0.3.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-twitter:jar:1.1.0.RELEASE:compile +| +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (org.springframework.security:spring-security-crypto:jar:3.2.3.RELEASE:compile - omitted for conflict with 3.2.4.RELEASE) +| +- (org.springframework.social:spring-social-config:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| \- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) ++- org.springframework.social:spring-social-linkedin:jar:1.0.1.RELEASE:compile +| +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (org.springframework.social:spring-social-core:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.social:spring-social-config:jar:1.1.0.RELEASE:compile - omitted for duplicate) ++- org.thymeleaf:thymeleaf:jar:2.1.3.RELEASE:compile +| +- ognl:ognl:jar:3.0.6:compile +| +- (org.javassist:javassist:jar:3.16.1-GA:compile - omitted for conflict with 3.18.1-GA) +| +- org.unbescape:unbescape:jar:1.0:compile +| \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.7) ++- org.thymeleaf.extras:thymeleaf-extras-springsecurity3:jar:2.1.1.RELEASE:compile +| +- (org.thymeleaf:thymeleaf:jar:2.1.2.RELEASE:compile - omitted for conflict with 2.1.3.RELEASE) +| \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.7) ++- org.thymeleaf:thymeleaf-spring4:jar:2.1.3.RELEASE:compile +| +- (org.thymeleaf:thymeleaf:jar:2.1.3.RELEASE:compile - omitted for duplicate) +| \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.7) ++- org.yaml:snakeyaml:jar:1.13:compile ++- redis.clients:jedis:jar:2.4.1:compile +| \- (org.apache.commons:commons-pool2:jar:2.0:compile - omitted for conflict with 2.2) ++- org.springframework:spring-aop:jar:4.0.5.RELEASE:compile +| +- aopalliance:aopalliance:jar:1.0:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-aspects:jar:4.0.5.RELEASE:compile +| \- (org.aspectj:aspectjweaver:jar:1.7.4:compile - omitted for conflict with 1.8.0) ++- org.springframework:spring-beans:jar:4.0.5.RELEASE:compile +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-context:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-expression:jar:4.0.5.RELEASE:compile - omitted for conflict with 4.0.3.RELEASE) ++- org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-expression:jar:4.0.5.RELEASE:compile +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-instrument:jar:4.0.5.RELEASE:compile ++- org.springframework:spring-instrument-tomcat:jar:4.0.5.RELEASE:compile ++- org.springframework:spring-jdbc:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.2.8.RELEASE) ++- org.springframework:spring-jms:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.2.8.RELEASE) ++- org.springframework:spring-messaging:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-orm:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-jdbc:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for conflict with 3.2.8.RELEASE) ++- org.springframework:spring-oxm:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-test:jar:4.0.5.RELEASE:compile +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-tx:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-web:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-webmvc:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-expression:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-web:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-webmvc-portlet:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-beans:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-web:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-webmvc:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework:spring-websocket:jar:4.0.5.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-core:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-web:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework.data:spring-data-cassandra:jar:1.0.0.RELEASE:compile +| +- org.springframework.data:spring-cql:jar:1.0.0.RELEASE:compile +| | +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework:spring-expression:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| | +- (com.datastax.cassandra:cassandra-driver-dse:jar:2.0.2:compile - omitted for duplicate) +| | +- org.apache.cassandra:cassandra-all:jar:2.0.6:compile +| | | +- org.xerial.snappy:snappy-java:jar:1.0.5:compile +| | | +- net.jpountz.lz4:lz4:jar:1.2.0:compile +| | | +- com.ning:compress-lzf:jar:0.8.4:compile +| | | +- (commons-cli:commons-cli:jar:1.1:compile - omitted for conflict with 1.2) +| | | +- (commons-codec:commons-codec:jar:1.2:compile - omitted for conflict with 1.6) +| | | +- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for duplicate) +| | | +- (com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:jar:1.3:compile - omitted for conflict with 1.3.1) +| | | +- org.antlr:antlr:jar:3.2:compile +| | | | \- org.antlr:antlr-runtime:jar:3.2:compile +| | | | \- org.antlr:stringtemplate:jar:3.2:compile +| | | | \- (antlr:antlr:jar:2.7.7:compile - omitted for duplicate) +| | | +- (org.slf4j:slf4j-api:jar:1.7.2:compile - omitted for conflict with 1.7.7) +| | | +- (org.codehaus.jackson:jackson-core-asl:jar:1.9.2:compile - omitted for conflict with 1.9.13) +| | | +- (org.codehaus.jackson:jackson-mapper-asl:jar:1.9.2:compile - omitted for conflict with 1.9.13) +| | | +- (jline:jline:jar:1.0:compile - omitted for conflict with 2.11) +| | | +- (com.googlecode.json-simple:json-simple:jar:1.1:compile - omitted for duplicate) +| | | +- com.github.stephenc.high-scale-lib:high-scale-lib:jar:1.1.2:compile +| | | +- (org.yaml:snakeyaml:jar:1.11:compile - omitted for conflict with 1.13) +| | | +- edu.stanford.ppl:snaptree:jar:0.1:compile +| | | +- org.mindrot:jbcrypt:jar:0.3m:compile +| | | +- com.yammer.metrics:metrics-core:jar:2.2.0:compile +| | | | \- (org.slf4j:slf4j-api:jar:1.7.2:compile - omitted for conflict with 1.7.7) +| | | +- com.addthis.metrics:reporter-config:jar:2.1.0:compile +| | | | +- (org.slf4j:slf4j-api:jar:1.7.2:compile - omitted for conflict with 1.7.7) +| | | | +- (org.yaml:snakeyaml:jar:1.12:compile - omitted for conflict with 1.13) +| | | | +- (org.hibernate:hibernate-validator:jar:4.3.0.Final:compile - omitted for conflict with 5.0.3.Final) +| | | | \- (com.yammer.metrics:metrics-core:jar:2.2.0:compile - omitted for duplicate) +| | | +- com.thinkaurelius.thrift:thrift-server:jar:0.3.3:compile +| | | | +- (com.lmax:disruptor:jar:3.0.1:compile - omitted for conflict with 3.2.1) +| | | | +- (org.apache.thrift:libthrift:jar:0.9.1:compile - omitted for duplicate) +| | | | +- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.7) +| | | | \- (junit:junit:jar:4.8.1:compile - omitted for conflict with 4.11) +| | | +- net.sf.supercsv:super-csv:jar:2.1.0:compile +| | | +- (log4j:log4j:jar:1.2.16:compile - omitted for conflict with 1.2.17) +| | | +- org.apache.thrift:libthrift:jar:0.9.1:compile +| | | | +- (org.slf4j:slf4j-api:jar:1.5.8:compile - omitted for conflict with 1.7.7) +| | | | +- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for duplicate) +| | | | +- (org.apache.httpcomponents:httpclient:jar:4.2.5:compile - omitted for conflict with 4.3.3) +| | | | \- (org.apache.httpcomponents:httpcore:jar:4.2.4:compile - omitted for conflict with 4.3.2) +| | | +- org.apache.cassandra:cassandra-thrift:jar:2.0.6:compile +| | | | +- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for duplicate) +| | | | +- (org.slf4j:slf4j-api:jar:1.7.2:compile - omitted for conflict with 1.7.7) +| | | | \- (org.apache.thrift:libthrift:jar:0.9.1:compile - omitted for duplicate) +| | | +- com.github.stephenc:jamm:jar:0.2.5:compile +| | | \- (io.netty:netty:jar:3.6.6.Final:compile - omitted for conflict with 3.5.5.Final) +| | +- (com.google.guava:guava:jar:15.0:compile - omitted for conflict with 16.0.1) +| | +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| | \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) +| +- (org.springframework:spring-expression:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- com.datastax.cassandra:cassandra-driver-dse:jar:2.0.2:compile +| | \- com.datastax.cassandra:cassandra-driver-core:jar:2.0.2:compile +| | +- (io.netty:netty:jar:3.9.0.Final:compile - omitted for conflict with 3.6.6.Final) +| | \- (com.codahale.metrics:metrics-core:jar:3.0.2:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-couchbase:jar:1.1.0.RELEASE:compile +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-web:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- com.couchbase.client:couchbase-client:jar:1.4.1:compile +| | +- io.netty:netty:jar:3.5.5.Final:compile +| | +- (org.codehaus.jettison:jettison:jar:1.1:compile - omitted for conflict with 1.2) +| | +- (commons-codec:commons-codec:jar:1.5:compile - omitted for conflict with 1.6) +| | +- net.spy:spymemcached:jar:2.11.2:compile +| | +- (org.apache.httpcomponents:httpcore:jar:4.3:compile - omitted for conflict with 4.3.2) +| | \- (org.apache.httpcomponents:httpcore-nio:jar:4.3:compile - omitted for conflict with 4.3.2) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.2:compile - omitted for conflict with 2.3.3) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-elasticsearch:jar:1.0.0.RELEASE:compile +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- (commons-lang:commons-lang:jar:2.6:compile - omitted for conflict with 2.4) +| +- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate) +| +- (joda-time:joda-time:jar:2.3:compile - omitted for duplicate) +| +- org.elasticsearch:elasticsearch:jar:1.1.1:compile +| | +- org.apache.lucene:lucene-core:jar:4.7.2:compile +| | +- org.apache.lucene:lucene-analyzers-common:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-codecs:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-queries:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-memory:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-highlighter:jar:4.7.2:compile +| | | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | | +- (org.apache.lucene:lucene-memory:jar:4.7.2:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-queries:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-queryparser:jar:4.7.2:compile +| | | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | | +- (org.apache.lucene:lucene-queries:jar:4.7.2:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-sandbox:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-sandbox:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-suggest:jar:4.7.2:compile +| | | +- (org.apache.lucene:lucene-analyzers-common:jar:4.7.2:compile - omitted for duplicate) +| | | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | | +- (org.apache.lucene:lucene-misc:jar:4.7.2:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-queries:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-misc:jar:4.7.2:compile +| | | \- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-join:jar:4.7.2:compile +| | | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-grouping:jar:4.7.2:compile - omitted for duplicate) +| | +- org.apache.lucene:lucene-grouping:jar:4.7.2:compile +| | | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-queries:jar:4.7.2:compile - omitted for duplicate) +| | \- org.apache.lucene:lucene-spatial:jar:4.7.2:compile +| | +- (org.apache.lucene:lucene-core:jar:4.7.2:compile - omitted for duplicate) +| | +- (org.apache.lucene:lucene-queries:jar:4.7.2:compile - omitted for duplicate) +| | \- com.spatial4j:spatial4j:jar:0.4.1:compile +| +- (com.fasterxml.jackson.core:jackson-core:jar:2.3.3:compile - omitted for duplicate) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-gemfire:jar:1.4.0.RELEASE:compile +| +- (antlr:antlr:jar:2.7.7:compile - scope updated from runtime; omitted for duplicate) +| +- (org.slf4j:jcl-over-slf4j:jar:1.7.6:compile - omitted for conflict with 1.7.7) +| +- (org.aspectj:aspectjweaver:jar:1.7.4:compile - omitted for conflict with 1.8.0) +| +- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.7) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- (com.gemstone.gemfire:gemfire:jar:7.0.2:compile - omitted for duplicate) +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.codehaus.jackson:jackson-mapper-asl:jar:1.9.12:compile - omitted for conflict with 1.9.13) +| +- (org.springframework:spring-aop:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context-support:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- org.codehaus.jackson:jackson-core-asl:jar:1.9.12:compile ++- org.springframework.data:spring-data-jpa:jar:1.6.0.RELEASE:compile +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-orm:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-aop:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.aspectj:aspectjrt:jar:1.8.0:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-mongodb:jar:1.5.0.RELEASE:compile +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-expression:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- (org.mongodb:mongo-java-driver:jar:2.12.1:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-neo4j:jar:3.1.0.RELEASE:compile +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-aspects:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-expression:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.aspectj:aspectjrt:jar:1.8.0:compile - omitted for duplicate) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- org.neo4j:neo4j-cypher-dsl:jar:2.0.1:compile +| +- org.neo4j:neo4j:jar:2.0.3:compile +| | +- org.neo4j:neo4j-kernel:jar:2.0.3:compile +| | | \- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile +| | +- org.neo4j:neo4j-lucene-index:jar:2.0.3:compile +| | | +- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | | \- (org.apache.lucene:lucene-core:jar:3.6.2:compile - omitted for conflict with 4.7.2) +| | +- org.neo4j:neo4j-graph-algo:jar:2.0.3:compile +| | | \- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | +- org.neo4j:neo4j-udc:jar:2.0.3:compile +| | | \- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | +- org.neo4j:neo4j-graph-matching:jar:2.0.3:compile +| | | \- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | +- (org.neo4j:neo4j-cypher:jar:2.0.3:compile - omitted for duplicate) +| | \- org.neo4j:neo4j-jmx:jar:2.0.3:compile +| +- org.neo4j:neo4j-cypher:jar:2.0.3:compile +| | +- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | +- (org.neo4j:neo4j-lucene-index:jar:2.0.3:compile - omitted for duplicate) +| | +- (org.neo4j:neo4j-graph-matching:jar:2.0.3:compile - omitted for duplicate) +| | +- (org.neo4j:neo4j-graph-algo:jar:2.0.3:compile - omitted for duplicate) +| | +- org.neo4j:neo4j-cypher-commons:jar:2.0.3:compile +| | | +- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | | +- (com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:jar:1.3.1:compile - omitted for conflict with 1.3) +| | | \- (org.scala-lang:scala-library:jar:2.10.3:compile - omitted for duplicate) +| | +- org.neo4j:neo4j-cypher-compiler-1.9:jar:2.0.3:compile +| | | +- (org.neo4j:neo4j-kernel:jar:2.0.3:compile - omitted for duplicate) +| | | +- (org.neo4j:neo4j-lucene-index:jar:2.0.3:compile - omitted for duplicate) +| | | +- (org.neo4j:neo4j-graph-matching:jar:2.0.3:compile - omitted for duplicate) +| | | +- (org.neo4j:neo4j-graph-algo:jar:2.0.3:compile - omitted for duplicate) +| | | \- (org.scala-lang:scala-library:jar:2.10.3:compile - omitted for duplicate) +| | +- org.neo4j:neo4j-cypher-compiler-2.0:jar:2.0.3:compile +| | | +- org.parboiled:parboiled-scala_2.10:jar:1.1.6:compile +| | | | \- org.parboiled:parboiled-core:jar:1.1.6:compile +| | | +- net.sf.opencsv:opencsv:jar:2.0:compile +| | | \- (org.scala-lang:scala-library:jar:2.10.3:compile - omitted for duplicate) +| | +- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:jar:1.3.1:compile +| | \- org.scala-lang:scala-library:jar:2.10.3:compile +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-redis:jar:1.3.0.RELEASE:compile +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-aop:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context-support:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.7) ++- org.springframework.data:spring-data-rest-webmvc:jar:2.1.0.RELEASE:compile +| +- org.springframework.data:spring-data-rest-core:jar:2.1.0.RELEASE:compile +| | +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | +- (org.springframework.hateoas:spring-hateoas:jar:0.12.0.RELEASE:compile - omitted for duplicate) +| | +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| | +- org.springframework.plugin:spring-plugin-core:jar:1.1.0.RELEASE:compile +| | | +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | | +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | | +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| | | \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.7) +| | +- org.atteo:evo-inflector:jar:1.1:compile +| | +- (com.fasterxml.jackson.core:jackson-annotations:jar:2.3.3:compile - omitted for duplicate) +| | +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| | \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) +| +- (org.springframework:spring-webmvc:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (com.fasterxml.jackson.core:jackson-databind:jar:2.3.3:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.data:spring-data-solr:jar:1.2.0.RELEASE:compile +| +- (org.springframework:spring-context:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-tx:jar:3.2.9.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework.data:spring-data-commons:jar:1.8.0.RELEASE:compile - omitted for duplicate) +| +- org.apache.commons:commons-lang3:jar:3.1:compile +| +- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate) +| +- (org.apache.httpcomponents:httpclient:jar:4.2.2:compile - omitted for conflict with 4.3.3) +| +- (org.apache.httpcomponents:httpmime:jar:4.2.2:compile - omitted for conflict with 4.3.3) +| +- org.apache.httpcomponents:httpclient-cache:jar:4.2.2:compile +| | \- (org.apache.httpcomponents:httpclient:jar:4.2.2:compile - omitted for conflict with 4.3.3) +| +- (org.apache.solr:solr-solrj:jar:4.7.2:compile - omitted for duplicate) +| +- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for duplicate) +| \- (org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime - omitted for duplicate) ++- org.springframework.integration:spring-integration-amqp:jar:4.0.2.RELEASE:compile +| +- (org.springframework.amqp:spring-rabbit:jar:1.3.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for conflict with 4.0.1.RELEASE) ++- org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile +| +- (org.springframework.retry:spring-retry:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-messaging:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-event:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-feed:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (net.java.dev.rome:rome-fetcher:jar:1.0.0:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- net.java.dev.rome:rome:jar:1.0.0:compile +| \- (jdom:jdom:jar:1.0:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-file:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- (commons-io:commons-io:jar:2.4:compile - omitted for conflict with 2.1) ++- org.springframework.integration:spring-integration-ftp:jar:4.0.2.RELEASE:compile +| +- commons-net:commons-net:jar:3.3:compile +| +- (org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-file:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-gemfire:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.data:spring-data-gemfire:jar:1.4.0.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-groovy:jar:4.0.2.RELEASE:compile +| +- (org.codehaus.groovy:groovy-all:jar:2.3.1:compile - omitted for conflict with 2.3.2) +| +- (org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-scripting:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-ip:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-jdbc:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-jdbc:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- com.google.guava:guava:jar:16.0.1:compile +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-jms:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-jms:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-jmx:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-jpa:jar:4.0.2.RELEASE:compile +| +- org.eclipse.persistence:javax.persistence:jar:2.0.0:compile +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-orm:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-mail:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-mongodb:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.data:spring-data-mongodb:jar:1.5.0.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-mqtt:jar:4.0.2.RELEASE:compile +| +- org.eclipse.paho:mqtt-client:jar:0.4.0:compile +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-redis:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.data:spring-data-redis:jar:1.3.0.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-rmi:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-scripting:jar:4.0.2.RELEASE:compile +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-security:jar:4.0.2.RELEASE:compile +| +- (org.springframework.security:spring-security-config:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-tx:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-sftp:jar:4.0.2.RELEASE:compile +| +- (org.springframework.integration:spring-integration-stream:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-file:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- com.jcraft:jsch:jar:0.1.51:compile ++- org.springframework.integration:spring-integration-stream:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-syslog:jar:4.0.2.RELEASE:compile +| \- (org.springframework.integration:spring-integration-ip:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-test:jar:4.0.2.RELEASE:compile +| +- (org.mockito:mockito-core:jar:1.9.5:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-test:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (junit:junit:jar:4.11:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- (org.hamcrest:hamcrest-all:jar:1.3:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-twitter:jar:4.0.2.RELEASE:compile +| +- (org.springframework.social:spring-social-twitter:jar:1.1.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-web:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-ws:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-webmvc:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-oxm:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- org.springframework.ws:spring-ws-core:jar:2.2.0.RELEASE:compile +| | +- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate) +| | \- (org.springframework.ws:spring-xml:jar:2.2.0.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-expression:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| \- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-xml:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-oxm:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-context:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| \- org.springframework.ws:spring-xml:jar:2.2.0.RELEASE:compile +| \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate) ++- org.springframework.integration:spring-integration-xmpp:jar:4.0.2.RELEASE:compile +| +- (org.springframework:spring-context-support:jar:4.0.5.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.integration:spring-integration-core:jar:4.0.2.RELEASE:compile - omitted for duplicate) +| +- org.igniterealtime.smack:smack:jar:3.2.1:compile +| \- org.igniterealtime.smack:smackx:jar:3.2.1:compile ++- org.springframework.security:spring-security-acl:jar:3.2.4.RELEASE:compile +| +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-jdbc:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-tx:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-aspects:jar:3.2.4.RELEASE:compile +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-cas:jar:3.2.4.RELEASE:compile +| +- org.jasig.cas.client:cas-client-core:jar:3.2.1:compile +| | \- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-web:jar:3.2.4.RELEASE:compile - omitted for conflict with 3.2.3.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-config:jar:3.2.4.RELEASE:compile +| +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile +| +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) +| +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-crypto:jar:3.2.4.RELEASE:compile +| \- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-ldap:jar:3.2.4.RELEASE:compile +| +- org.springframework.ldap:spring-ldap-core:jar:1.3.2.RELEASE:compile +| | \- (commons-lang:commons-lang:jar:2.4:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-tx:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-openid:jar:3.2.4.RELEASE:compile +| +- com.google.inject:guice:jar:2.0:compile +| | \- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) +| +- org.openid4java:openid4java-nodeps:jar:0.9.6:compile +| | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3) +| | \- net.jcip:jcip-annotations:jar:1.0:compile +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-web:jar:3.2.4.RELEASE:compile - omitted for conflict with 3.2.3.RELEASE) +| +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- net.sourceforge.nekohtml:nekohtml:jar:1.9.20:runtime +| | \- (xerces:xercesImpl:jar:2.10.0:runtime - omitted for conflict with 2.4.0) +| \- (org.apache.httpcomponents:httpclient:jar:4.2.3:runtime - omitted for conflict with 4.3.3) ++- org.springframework.security:spring-security-remoting:jar:3.2.4.RELEASE:compile +| +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) ++- org.springframework.security:spring-security-taglibs:jar:3.2.4.RELEASE:compile +| +- (org.springframework.security:spring-security-acl:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) +| +- (org.springframework.security:spring-security-web:jar:3.2.4.RELEASE:compile - omitted for conflict with 3.2.3.RELEASE) +| +- (org.springframework:spring-aop:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| +- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +| \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) +\- org.springframework.security:spring-security-web:jar:3.2.4.RELEASE:compile + +- (aopalliance:aopalliance:jar:1.0:compile - omitted for duplicate) + +- (org.springframework.security:spring-security-core:jar:3.2.4.RELEASE:compile - omitted for duplicate) + +- (org.springframework:spring-beans:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) + +- (org.springframework:spring-context:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) + +- (org.springframework:spring-core:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) + +- (org.springframework:spring-expression:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) + \- (org.springframework:spring-web:jar:3.2.8.RELEASE:compile - omitted for conflict with 4.0.5.RELEASE) diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom-dependency-tree.txt b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom-dependency-tree.txt new file mode 100644 index 0000000000..de186933cc --- /dev/null +++ b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom-dependency-tree.txt @@ -0,0 +1,5 @@ +org.sample:sample:pom:1.0.0.BUILD-SNAPSHOT ++- org.sample:sample01:jar:1.0.0:compile ++- org.sample:sample02:jar:1.0.0:compile +| +- (org.sample:sample01:jar:1.0.0:compile - omitted for duplicate) +\- org.springframework.boot:spring-boot:jar:1.0.0.BUILD-SNAPSHOT:compile diff --git a/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom.xml b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom.xml index 0343fd2054..e99bb68407 100644 --- a/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom.xml +++ b/spring-boot-tools/spring-boot-dependency-tools/src/test/resources/org/springframework/boot/dependency/tools/test-effective-pom.xml @@ -2,6 +2,8 @@ 4.0.0 + org.sample + sample 1.0.0.BUILD-SNAPSHOT 1.0.0 From cef7ad77985fe9fd9521b093831e2869bd905fcc Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sun, 8 Jun 2014 20:59:26 -0700 Subject: [PATCH 3/4] Support automatic exclude rules with Gradle Update the Spring Boot Gradle plugin to automatically apply exclude rules to dependencies. See gh-1047 --- .../boot/gradle/SpringBootPlugin.groovy | 5 ++ .../gradle/SpringBootPluginExtension.groovy | 5 ++ .../gradle/VersionManagedDependencies.java | 86 ++++++++++++++++++ .../gradle/exclude/ApplyExcludeRules.java | 89 +++++++++++++++++++ .../gradle/exclude/ExcludePluginFeatures.java | 39 ++++++++ .../gradle/resolve/ResolvePluginFeatures.java | 2 - .../resolve/SpringBootResolutionStrategy.java | 55 +++--------- 7 files changed, 234 insertions(+), 47 deletions(-) create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/VersionManagedDependencies.java create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ApplyExcludeRules.java create mode 100644 spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ExcludePluginFeatures.java diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy index b1fd5ce19b..7d37095c89 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPlugin.groovy @@ -22,10 +22,13 @@ import org.gradle.api.plugins.ApplicationPlugin import org.gradle.api.plugins.BasePlugin import org.gradle.api.plugins.JavaPlugin import org.springframework.boot.gradle.agent.AgentPluginFeatures +import org.springframework.boot.gradle.exclude.ExcludePluginFeatures import org.springframework.boot.gradle.repackage.RepackagePluginFeatures import org.springframework.boot.gradle.resolve.ResolvePluginFeatures +import org.springframework.boot.gradle.resolve.SpringBootResolutionStrategy import org.springframework.boot.gradle.run.RunPluginFeatures + /** * Gradle 'Spring Boot' {@link Plugin}. * @@ -41,11 +44,13 @@ class SpringBootPlugin implements Plugin { project.getPlugins().apply(ApplicationPlugin) project.getExtensions().create("springBoot", SpringBootPluginExtension) + project.getConfigurations().create(VersionManagedDependencies.CONFIGURATION); new AgentPluginFeatures().apply(project) new ResolvePluginFeatures().apply(project) new RepackagePluginFeatures().apply(project) new RunPluginFeatures().apply(project) + new ExcludePluginFeatures().apply(project) useUtf8Encoding(project) } diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPluginExtension.groovy b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPluginExtension.groovy index ab2436c6d7..0607308fb7 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPluginExtension.groovy +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/SpringBootPluginExtension.groovy @@ -108,4 +108,9 @@ public class SpringBootPluginExtension { * Flag to indicate that the agent requires -noverify (and the plugin will refuse to start if it is not set) */ Boolean noverify; + + /** + * If exclude rules should be applied to dependencies based on the spring-dependencies-bom + */ + boolean applyExcludeRules = true; } diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/VersionManagedDependencies.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/VersionManagedDependencies.java new file mode 100644 index 0000000000..08d4eed181 --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/VersionManagedDependencies.java @@ -0,0 +1,86 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.gradle; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Set; + +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.springframework.boot.dependency.tools.Dependencies; +import org.springframework.boot.dependency.tools.ManagedDependencies; +import org.springframework.boot.dependency.tools.PropertiesFileDependencies; + +/** + * Utility to provide access to {@link ManagedDependencies} with support for version + * file overrides. + * + * @author Phillip Webb + */ +public class VersionManagedDependencies { + + public static final String CONFIGURATION = "versionManagement"; + + private Configuration versionManagementConfiguration; + + private Collection versionManagedDependencies; + + private ManagedDependencies managedDependencies; + + public VersionManagedDependencies(Project project) { + this.versionManagementConfiguration = project.getConfigurations().getByName( + CONFIGURATION); + } + + public ManagedDependencies getManagedDependencies() { + if (this.managedDependencies == null) { + this.managedDependencies = ManagedDependencies + .get(getVersionManagedDependencies()); + } + return this.managedDependencies; + } + + private Collection getVersionManagedDependencies() { + if (versionManagedDependencies == null) { + Set files = versionManagementConfiguration.resolve(); + List dependencies = new ArrayList(files.size()); + for (File file : files) { + dependencies.add(getPropertiesFileManagedDependencies(file)); + } + this.versionManagedDependencies = dependencies; + } + return versionManagedDependencies; + } + + private Dependencies getPropertiesFileManagedDependencies(File file) { + if (!file.getName().toLowerCase().endsWith(".properties")) { + throw new IllegalStateException(file + " is not a version property file"); + } + try { + return new PropertiesFileDependencies(new FileInputStream(file)); + } + catch (IOException ex) { + throw new IllegalStateException(ex); + } + } + +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ApplyExcludeRules.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ApplyExcludeRules.java new file mode 100644 index 0000000000..e1dcea1e98 --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ApplyExcludeRules.java @@ -0,0 +1,89 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.gradle.exclude; + +import org.gradle.api.Action; +import org.gradle.api.Project; +import org.gradle.api.artifacts.Configuration; +import org.gradle.api.artifacts.Dependency; +import org.gradle.api.artifacts.ModuleDependency; +import org.gradle.api.internal.artifacts.DefaultExcludeRule; +import org.gradle.api.logging.Logger; +import org.springframework.boot.dependency.tools.Dependency.Exclusion; +import org.springframework.boot.dependency.tools.ManagedDependencies; +import org.springframework.boot.gradle.VersionManagedDependencies; + +/** + * {@link Action} to apply exclude rules. + * + * @author Phillip Webb + */ +public class ApplyExcludeRules implements Action { + + private final Logger logger; + + private final VersionManagedDependencies versionManagedDependencies; + + public ApplyExcludeRules(Project project) { + this.logger = project.getLogger(); + this.versionManagedDependencies = new VersionManagedDependencies(project); + } + + @Override + public void execute(Configuration configuration) { + configuration.getDependencies().all(new Action() { + @Override + public void execute(Dependency dependency) { + applyExcludeRules(dependency); + } + }); + } + + private void applyExcludeRules(Dependency dependency) { + if (dependency instanceof ModuleDependency) { + applyExcludeRules((ModuleDependency) dependency); + } + } + + private void applyExcludeRules(ModuleDependency dependency) { + ManagedDependencies managedDependencies = versionManagedDependencies + .getManagedDependencies(); + org.springframework.boot.dependency.tools.Dependency managedDependency = managedDependencies + .find(dependency.getGroup(), dependency.getName()); + if (managedDependency != null) { + if (managedDependency.getExclusions().isEmpty()) { + logger.debug("No exclusions rules applied for managed dependency " + + dependency); + } + for (Exclusion exclusion : managedDependency.getExclusions()) { + addExcludeRule(dependency, exclusion); + } + } + else { + logger.debug("No exclusions rules applied for non-managed dependency " + + dependency); + } + } + + private void addExcludeRule(ModuleDependency dependency, Exclusion exclusion) { + logger.info("Adding managed exclusion rule " + exclusion + " to " + dependency); + DefaultExcludeRule rule = new DefaultExcludeRule(exclusion.getGroupId(), + exclusion.getArtifactId()); + dependency.getExcludeRules().add(rule); + } + +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ExcludePluginFeatures.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ExcludePluginFeatures.java new file mode 100644 index 0000000000..26510ff488 --- /dev/null +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/exclude/ExcludePluginFeatures.java @@ -0,0 +1,39 @@ +/* + * Copyright 2012-2014 the original author or authors. + * + * Licensed 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. + */ + +package org.springframework.boot.gradle.exclude; + +import org.gradle.api.Project; +import org.springframework.boot.gradle.PluginFeatures; +import org.springframework.boot.gradle.SpringBootPluginExtension; + +/** + * {@link PluginFeatures} to apply exclusion rules. + * + * @author Phillip Webb + */ +public class ExcludePluginFeatures implements PluginFeatures { + + @Override + public void apply(Project project) { + SpringBootPluginExtension extension = project.getExtensions().getByType( + SpringBootPluginExtension.class); + if (extension.isApplyExcludeRules()) { + project.getConfigurations().all(new ApplyExcludeRules(project)); + } + } + +} diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/ResolvePluginFeatures.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/ResolvePluginFeatures.java index 9988813103..d17057f228 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/ResolvePluginFeatures.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/ResolvePluginFeatures.java @@ -30,8 +30,6 @@ public class ResolvePluginFeatures implements PluginFeatures { @Override public void apply(final Project project) { - project.getConfigurations().create( - SpringBootResolutionStrategy.VERSION_MANAGEMENT_CONFIGURATION); project.getConfigurations().all(new Action() { @Override public void execute(Configuration configuration) { diff --git a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/SpringBootResolutionStrategy.java b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/SpringBootResolutionStrategy.java index 13083a9dba..521fd68a60 100644 --- a/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/SpringBootResolutionStrategy.java +++ b/spring-boot-tools/spring-boot-gradle-plugin/src/main/groovy/org/springframework/boot/gradle/resolve/SpringBootResolutionStrategy.java @@ -16,23 +16,14 @@ package org.springframework.boot.gradle.resolve; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; - import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.DependencyResolveDetails; import org.gradle.api.artifacts.ModuleVersionSelector; -import org.springframework.boot.dependency.tools.Dependencies; import org.springframework.boot.dependency.tools.Dependency; import org.springframework.boot.dependency.tools.ManagedDependencies; -import org.springframework.boot.dependency.tools.PropertiesFileDependencies; +import org.springframework.boot.gradle.VersionManagedDependencies; /** * A resolution strategy to resolve missing version numbers using the @@ -42,12 +33,11 @@ import org.springframework.boot.dependency.tools.PropertiesFileDependencies; */ public class SpringBootResolutionStrategy { - public static final String VERSION_MANAGEMENT_CONFIGURATION = "versionManagement"; - private static final String SPRING_BOOT_GROUP = "org.springframework.boot"; - public static void applyToConfiguration(final Project project, Configuration configuration) { - if (VERSION_MANAGEMENT_CONFIGURATION.equals(configuration.getName())) { + public static void applyToConfiguration(final Project project, + Configuration configuration) { + if (VersionManagedDependencies.CONFIGURATION.equals(configuration.getName())) { return; } VersionResolver versionResolver = new VersionResolver(project); @@ -56,13 +46,10 @@ public class SpringBootResolutionStrategy { private static class VersionResolver implements Action { - private Configuration versionManagementConfiguration; - - private Collection versionManagedDependencies; + private final VersionManagedDependencies versionManagedDependencies; public VersionResolver(Project project) { - this.versionManagementConfiguration = project.getConfigurations().getByName( - VERSION_MANAGEMENT_CONFIGURATION); + this.versionManagedDependencies = new VersionManagedDependencies(project); } @Override @@ -74,41 +61,19 @@ public class SpringBootResolutionStrategy { } private void resolve(DependencyResolveDetails resolveDetails) { - ManagedDependencies dependencies = ManagedDependencies.get( - getVersionManagedDependencies()); + ManagedDependencies dependencies = this.versionManagedDependencies + .getManagedDependencies(); ModuleVersionSelector target = resolveDetails.getTarget(); if (SPRING_BOOT_GROUP.equals(target.getGroup())) { resolveDetails.useVersion(dependencies.getSpringBootVersion()); return; } - Dependency dependency = dependencies.find(target.getGroup(), target.getName()); + Dependency dependency = dependencies + .find(target.getGroup(), target.getName()); if (dependency != null) { resolveDetails.useVersion(dependency.getVersion()); } } - private Collection getVersionManagedDependencies() { - if (versionManagedDependencies == null) { - Set files = versionManagementConfiguration.resolve(); - List dependencies = new ArrayList( - files.size()); - for (File file : files) { - dependencies.add(getPropertiesFileManagedDependencies(file)); - } - this.versionManagedDependencies = dependencies; - } - return versionManagedDependencies; - } - - private Dependencies getPropertiesFileManagedDependencies(File file) { - if (!file.getName().toLowerCase().endsWith(".properties")) { - throw new IllegalStateException(file + " is not a version property file"); - } - try { - return new PropertiesFileDependencies(new FileInputStream(file)); - } catch (IOException ex) { - throw new IllegalStateException(ex); - } - } } } From 933c6b3a43c7945b2600b5b7e2426d8fed32d126 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Sun, 8 Jun 2014 22:37:48 -0700 Subject: [PATCH 4/4] Remove superfluous commons-logging excludes Update all starter POMs to remove commons-logging dependencies that are not longer required when using the Spring Boot Gradle plugin. Mainly reverts code from 196f92bd422778aebe5706b84cc8ffe9bc298878 See gh-1047 --- spring-boot-dependencies/pom.xml | 34 ++++++++ .../src/test/resources/build.gradle | 13 ++- .../spring-boot-starter-actuator/pom.xml | 14 ++- .../spring-boot-starter-amqp/pom.xml | 26 ++---- .../spring-boot-starter-aop/pom.xml | 24 +++--- .../spring-boot-starter-batch/pom.xml | 26 ++---- .../pom.xml | 22 ++--- .../spring-boot-starter-data-gemfire/pom.xml | 34 +++----- .../spring-boot-starter-data-jpa/pom.xml | 54 +++--------- .../spring-boot-starter-data-mongodb/pom.xml | 22 ++--- .../spring-boot-starter-data-rest/pom.xml | 34 ++++---- .../spring-boot-starter-data-solr/pom.xml | 32 +++---- .../spring-boot-starter-freemarker/pom.xml | 20 +++-- .../pom.xml | 4 + .../spring-boot-starter-hornetq/pom.xml | 10 +-- .../spring-boot-starter-integration/pom.xml | 86 +++---------------- .../spring-boot-starter-jdbc/pom.xml | 28 +++--- .../spring-boot-starter-jetty/pom.xml | 14 +++ .../spring-boot-starter-mobile/pom.xml | 16 +--- .../spring-boot-starter-parent/pom.xml | 1 - .../spring-boot-starter-redis/pom.xml | 28 ++---- .../spring-boot-starter-remote-shell/pom.xml | 56 ++++++------ .../spring-boot-starter-security/pom.xml | 58 +++---------- .../pom.xml | 38 ++------ .../pom.xml | 38 ++------ .../pom.xml | 38 ++------ .../spring-boot-starter-test/pom.xml | 6 +- .../spring-boot-starter-thymeleaf/pom.xml | 8 ++ .../spring-boot-starter-tomcat/pom.xml | 14 +++ .../spring-boot-starter-velocity/pom.xml | 22 ++--- .../spring-boot-starter-web/pom.xml | 24 ++---- .../spring-boot-starter-websocket/pom.xml | 14 +-- .../spring-boot-starter/pom.xml | 18 ++-- 33 files changed, 325 insertions(+), 551 deletions(-) diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index 38bc2c3c4e..798126d63f 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -503,6 +503,12 @@ org.apache.httpcomponents httpclient ${httpclient.version} + + + commons-logging + commons-logging + + org.apache.httpcomponents @@ -513,6 +519,12 @@ org.apache.httpcomponents httpasyncclient ${httpasyncclient.version} + + + commons-logging + commons-logging + + org.apache.tomcat.embed @@ -558,6 +570,12 @@ org.apache.velocity velocity-tools ${velocity-tools.version} + + + commons-logging + commons-logging + + org.aspectj @@ -678,6 +696,12 @@ org.crashub crash.connectors.ssh ${crashub.version} + + + commons-logging + commons-logging + + org.crashub @@ -976,6 +1000,16 @@ org.springframework.integration spring-integration-http ${spring-integration.version} + + + commons-logging + commons-logging + + + commons-logging + commons-logging-api + + org.springframework.mobile diff --git a/spring-boot-integration-tests/src/test/resources/build.gradle b/spring-boot-integration-tests/src/test/resources/build.gradle index 6b5c3791ae..36e51e750b 100644 --- a/spring-boot-integration-tests/src/test/resources/build.gradle +++ b/spring-boot-integration-tests/src/test/resources/build.gradle @@ -1,5 +1,14 @@ import org.gradle.api.artifacts.result.UnresolvedDependencyResult; +buildscript { + repositories { + mavenLocal() + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${project.bootVersion}") + } +} + repositories { mavenLocal() mavenCentral() @@ -13,6 +22,8 @@ dependencies { springBootStarter "org.springframework.boot:${project.starter}:${project.bootVersion}" } +apply plugin: 'spring-boot' + task checkCommonsLogging { doFirst { def commonsLogging = resolvedDependencies @@ -46,4 +57,4 @@ def getResolvedDependencies() { throw new GradleException("Resolution of ${project.starter} failed: ${unresolved}") } resolved -} \ No newline at end of file +} diff --git a/spring-boot-starters/spring-boot-starter-actuator/pom.xml b/spring-boot-starters/spring-boot-starter-actuator/pom.xml index 0e898456e9..4e4efd493b 100644 --- a/spring-boot-starters/spring-boot-starter-actuator/pom.xml +++ b/spring-boot-starters/spring-boot-starter-actuator/pom.xml @@ -20,17 +20,15 @@ org.springframework.boot - spring-boot-actuator - - - commons-logging - commons-logging - - + spring-boot-starter org.springframework.boot - spring-boot-starter + spring-boot-actuator + + + org.springframework + spring-core commons-logging diff --git a/spring-boot-starters/spring-boot-starter-amqp/pom.xml b/spring-boot-starters/spring-boot-starter-amqp/pom.xml index 882041a925..2a8f0dede4 100644 --- a/spring-boot-starters/spring-boot-starter-amqp/pom.xml +++ b/spring-boot-starters/spring-boot-starter-amqp/pom.xml @@ -18,9 +18,13 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework - spring-tx + spring-core commons-logging @@ -29,24 +33,12 @@ - org.springframework.amqp - spring-rabbit - - - commons-logging - commons-logging - - + org.springframework + spring-tx - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework.amqp + spring-rabbit diff --git a/spring-boot-starters/spring-boot-starter-aop/pom.xml b/spring-boot-starters/spring-boot-starter-aop/pom.xml index 7801b6e1c0..255c76eff9 100644 --- a/spring-boot-starters/spring-boot-starter-aop/pom.xml +++ b/spring-boot-starters/spring-boot-starter-aop/pom.xml @@ -19,16 +19,16 @@ - org.aspectj - aspectjrt + org.springframework.boot + spring-boot-starter - org.aspectj - aspectjweaver + org.springframework + spring-aop org.springframework - spring-aop + spring-core commons-logging @@ -37,14 +37,12 @@ - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.aspectj + aspectjrt + + + org.aspectj + aspectjweaver diff --git a/spring-boot-starters/spring-boot-starter-batch/pom.xml b/spring-boot-starters/spring-boot-starter-batch/pom.xml index 7b4692b9d3..87189e62e9 100644 --- a/spring-boot-starters/spring-boot-starter-batch/pom.xml +++ b/spring-boot-starters/spring-boot-starter-batch/pom.xml @@ -18,13 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.hsqldb hsqldb org.springframework - spring-jdbc + spring-core commons-logging @@ -33,24 +37,12 @@ - org.springframework.batch - spring-batch-core - - - commons-logging - commons-logging - - + org.springframework + spring-jdbc - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework.batch + spring-batch-core diff --git a/spring-boot-starters/spring-boot-starter-data-elasticsearch/pom.xml b/spring-boot-starters/spring-boot-starter-data-elasticsearch/pom.xml index f65245a3fc..19860a6d2b 100644 --- a/spring-boot-starters/spring-boot-starter-data-elasticsearch/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-elasticsearch/pom.xml @@ -19,9 +19,13 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework - spring-tx + spring-core commons-logging @@ -30,24 +34,12 @@ - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-tx org.springframework.data spring-data-elasticsearch - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml b/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml index a2c3bc9191..7baaa848dd 100644 --- a/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-gemfire/pom.xml @@ -19,13 +19,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + com.gemstone.gemfire gemfire org.springframework - spring-context-support + spring-core commons-logging @@ -35,33 +39,19 @@ org.springframework - spring-tx - - - commons-logging - commons-logging - - + spring-context - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-context-support + + + org.springframework + spring-tx org.springframework.data spring-data-gemfire - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml b/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml index f345d7fa8f..8724172695 100644 --- a/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-jpa/pom.xml @@ -19,22 +19,16 @@ - org.hibernate - hibernate-entitymanager + org.springframework.boot + spring-boot-starter - org.springframework - spring-aspects - - - commons-logging - commons-logging - - + org.springframework.boot + spring-boot-starter-aop org.springframework - spring-orm + spring-core commons-logging @@ -44,43 +38,23 @@ org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + spring-boot-starter-jdbc - org.springframework.boot - spring-boot-starter-aop - - - commons-logging - commons-logging - - + org.hibernate + hibernate-entitymanager - org.springframework.boot - spring-boot-starter-jdbc - - - commons-logging - commons-logging - - + org.springframework + spring-orm org.springframework.data spring-data-jpa - - - commons-logging - commons-logging - - + + + org.springframework + spring-aspects diff --git a/spring-boot-starters/spring-boot-starter-data-mongodb/pom.xml b/spring-boot-starters/spring-boot-starter-data-mongodb/pom.xml index 94895b8546..f4276c2e67 100644 --- a/spring-boot-starters/spring-boot-starter-data-mongodb/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-mongodb/pom.xml @@ -18,13 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.mongodb mongo-java-driver org.springframework - spring-tx + spring-core commons-logging @@ -33,24 +37,12 @@ - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-tx org.springframework.data spring-data-mongodb - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-data-rest/pom.xml b/spring-boot-starters/spring-boot-starter-data-rest/pom.xml index ae48801246..a9d2f695ba 100644 --- a/spring-boot-starters/spring-boot-starter-data-rest/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-rest/pom.xml @@ -18,6 +18,14 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + com.fasterxml.jackson.core jackson-annotations @@ -28,7 +36,7 @@ org.springframework - spring-tx + spring-core commons-logging @@ -37,24 +45,20 @@ - org.springframework.boot - spring-boot-starter-web - - - commons-logging - commons-logging - - + org.springframework + spring-tx org.springframework.data spring-data-rest-webmvc - - - commons-logging - commons-logging - - + + + com.fasterxml.jackson.core + jackson-annotations + + + com.fasterxml.jackson.core + jackson-databind diff --git a/spring-boot-starters/spring-boot-starter-data-solr/pom.xml b/spring-boot-starters/spring-boot-starter-data-solr/pom.xml index 946b99eb6c..7070dc7b31 100644 --- a/spring-boot-starters/spring-boot-starter-data-solr/pom.xml +++ b/spring-boot-starters/spring-boot-starter-data-solr/pom.xml @@ -18,19 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.apache.solr solr-solrj - - - commons-logging - commons-logging - - org.springframework - spring-tx + spring-core commons-logging @@ -39,24 +37,16 @@ - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-tx org.springframework.data spring-data-solr - - - commons-logging - commons-logging - - + + + org.apache.httpcomponents + httpmime diff --git a/spring-boot-starters/spring-boot-starter-freemarker/pom.xml b/spring-boot-starters/spring-boot-starter-freemarker/pom.xml index 0e529bcce6..4f3cdb02d3 100644 --- a/spring-boot-starters/spring-boot-starter-freemarker/pom.xml +++ b/spring-boot-starters/spring-boot-starter-freemarker/pom.xml @@ -18,13 +18,21 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + org.freemarker freemarker org.springframework - spring-context-support + spring-core commons-logging @@ -33,14 +41,8 @@ - org.springframework.boot - spring-boot-starter-web - - - commons-logging - commons-logging - - + org.springframework + spring-context-support diff --git a/spring-boot-starters/spring-boot-starter-groovy-templates/pom.xml b/spring-boot-starters/spring-boot-starter-groovy-templates/pom.xml index 41a98cc39a..d1f31df30e 100644 --- a/spring-boot-starters/spring-boot-starter-groovy-templates/pom.xml +++ b/spring-boot-starters/spring-boot-starter-groovy-templates/pom.xml @@ -18,6 +18,10 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework.boot spring-boot-starter-web diff --git a/spring-boot-starters/spring-boot-starter-hornetq/pom.xml b/spring-boot-starters/spring-boot-starter-hornetq/pom.xml index d18710a2f1..cb48ad9608 100644 --- a/spring-boot-starters/spring-boot-starter-hornetq/pom.xml +++ b/spring-boot-starters/spring-boot-starter-hornetq/pom.xml @@ -21,6 +21,10 @@ org.springframework.boot spring-boot-starter + + + org.springframework + spring-core commons-logging @@ -31,12 +35,6 @@ org.springframework spring-jms - - - commons-logging - commons-logging - - org.hornetq diff --git a/spring-boot-starters/spring-boot-starter-integration/pom.xml b/spring-boot-starters/spring-boot-starter-integration/pom.xml index 86bca4f7b8..b94000c6cd 100644 --- a/spring-boot-starters/spring-boot-starter-integration/pom.xml +++ b/spring-boot-starters/spring-boot-starter-integration/pom.xml @@ -19,18 +19,16 @@ - org.springframework - spring-messaging - - - commons-logging - commons-logging - - + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-aop org.springframework - spring-tx + spring-core commons-logging @@ -40,97 +38,39 @@ org.springframework - spring-web - - - commons-logging - commons-logging - - + spring-messaging org.springframework - spring-webmvc - - - commons-logging - commons-logging - - + spring-tx - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-web - org.springframework.boot - spring-boot-starter-aop - - - commons-logging - commons-logging - - + org.springframework + spring-webmvc org.springframework.integration spring-integration-core - - - commons-logging - commons-logging - - org.springframework.integration spring-integration-file - - - commons-logging - commons-logging - - org.springframework.integration spring-integration-http - - - commons-logging - commons-logging - - - commons-logging - commons-logging-api - - org.springframework.integration spring-integration-ip - - - commons-logging - commons-logging - - org.springframework.integration spring-integration-stream - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-jdbc/pom.xml b/spring-boot-starters/spring-boot-starter-jdbc/pom.xml index 0ab3379e3d..bade0dd6b7 100644 --- a/spring-boot-starters/spring-boot-starter-jdbc/pom.xml +++ b/spring-boot-starters/spring-boot-starter-jdbc/pom.xml @@ -19,12 +19,12 @@ - org.apache.tomcat - tomcat-jdbc + org.springframework.boot + spring-boot-starter org.springframework - spring-jdbc + spring-core commons-logging @@ -34,23 +34,15 @@ org.springframework - spring-tx - - - commons-logging - commons-logging - - + spring-jdbc - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.apache.tomcat + tomcat-jdbc + + + org.springframework + spring-tx diff --git a/spring-boot-starters/spring-boot-starter-jetty/pom.xml b/spring-boot-starters/spring-boot-starter-jetty/pom.xml index 96a315dcee..eebb0ebfa3 100644 --- a/spring-boot-starters/spring-boot-starter-jetty/pom.xml +++ b/spring-boot-starters/spring-boot-starter-jetty/pom.xml @@ -18,6 +18,10 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.eclipse.jetty jetty-webapp @@ -26,5 +30,15 @@ org.eclipse.jetty jetty-jsp + + org.springframework + spring-core + + + commons-logging + commons-logging + + + diff --git a/spring-boot-starters/spring-boot-starter-mobile/pom.xml b/spring-boot-starters/spring-boot-starter-mobile/pom.xml index 2e66362463..e94466fc0a 100644 --- a/spring-boot-starters/spring-boot-starter-mobile/pom.xml +++ b/spring-boot-starters/spring-boot-starter-mobile/pom.xml @@ -21,16 +21,14 @@ org.springframework.boot spring-boot-starter - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging @@ -41,12 +39,6 @@ org.springframework.mobile spring-mobile-device - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-parent/pom.xml b/spring-boot-starters/spring-boot-starter-parent/pom.xml index a5eb0a1bcd..e3726ac5a6 100644 --- a/spring-boot-starters/spring-boot-starter-parent/pom.xml +++ b/spring-boot-starters/spring-boot-starter-parent/pom.xml @@ -28,7 +28,6 @@ spring-core ${spring.version} - commons-logging commons-logging diff --git a/spring-boot-starters/spring-boot-starter-redis/pom.xml b/spring-boot-starters/spring-boot-starter-redis/pom.xml index 18ae17d76e..85a92a9b91 100644 --- a/spring-boot-starters/spring-boot-starter-redis/pom.xml +++ b/spring-boot-starters/spring-boot-starter-redis/pom.xml @@ -18,19 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework spring-context-support - - - commons-logging - commons-logging - - org.springframework - spring-tx + spring-core commons-logging @@ -39,24 +37,12 @@ - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-tx org.springframework.data spring-data-redis - - - commons-logging - commons-logging - - redis.clients diff --git a/spring-boot-starters/spring-boot-starter-remote-shell/pom.xml b/spring-boot-starters/spring-boot-starter-remote-shell/pom.xml index aaee33af47..b825a712c9 100644 --- a/spring-boot-starters/spring-boot-starter-remote-shell/pom.xml +++ b/spring-boot-starters/spring-boot-starter-remote-shell/pom.xml @@ -19,16 +19,16 @@ - org.codehaus.groovy - groovy + org.springframework.boot + spring-boot-starter - org.crashub - crash.cli + org.springframework.boot + spring-boot-starter-actuator - org.crashub - crash.connectors.ssh + org.springframework + spring-core commons-logging @@ -36,14 +36,22 @@ + + org.springframework + spring-context + + + org.crashub + crash.cli + + + org.crashub + crash.connectors.ssh + org.crashub crash.connectors.telnet - - commons-logging - commons-logging - javax.servlet servlet-api @@ -52,6 +60,10 @@ log4j log4j + + commons-logging + commons-logging + true @@ -59,10 +71,6 @@ org.crashub crash.embed.spring - - commons-logging - commons-logging - spring-web org.springframework @@ -88,24 +96,8 @@ - org.springframework - spring-context - - - commons-logging - commons-logging - - - - - org.springframework.boot - spring-boot-starter-actuator - - - commons-logging - commons-logging - - + org.codehaus.groovy + groovy diff --git a/spring-boot-starters/spring-boot-starter-security/pom.xml b/spring-boot-starters/spring-boot-starter-security/pom.xml index 6078afaa76..fb9ad3c944 100644 --- a/spring-boot-starters/spring-boot-starter-security/pom.xml +++ b/spring-boot-starters/spring-boot-starter-security/pom.xml @@ -19,38 +19,20 @@ - org.springframework - spring-aop - - - commons-logging - commons-logging - - + org.springframework.boot + spring-boot-starter org.springframework spring-beans - - - commons-logging - commons-logging - - org.springframework spring-context - - - commons-logging - commons-logging - - org.springframework - spring-expression + spring-core commons-logging @@ -60,43 +42,23 @@ org.springframework - spring-web - - - commons-logging - commons-logging - - + spring-expression - org.springframework.boot - spring-boot-starter - - - commons-logging - commons-logging - - + org.springframework + spring-web org.springframework.security spring-security-config - - - commons-logging - commons-logging - - org.springframework.security spring-security-web - - - commons-logging - commons-logging - - + + + org.springframework + spring-aop diff --git a/spring-boot-starters/spring-boot-starter-social-facebook/pom.xml b/spring-boot-starters/spring-boot-starter-social-facebook/pom.xml index 38fdbeac92..34c72e7e50 100644 --- a/spring-boot-starters/spring-boot-starter-social-facebook/pom.xml +++ b/spring-boot-starters/spring-boot-starter-social-facebook/pom.xml @@ -21,16 +21,14 @@ org.springframework.boot spring-boot-starter - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging @@ -41,42 +39,18 @@ org.springframework.social spring-social-config - - - commons-logging - commons-logging - - org.springframework.social spring-social-core - - - commons-logging - commons-logging - - org.springframework.social - spring-social-facebook - - - commons-logging - commons-logging - - + spring-social-web org.springframework.social - spring-social-web - - - commons-logging - commons-logging - - + spring-social-facebook diff --git a/spring-boot-starters/spring-boot-starter-social-linkedin/pom.xml b/spring-boot-starters/spring-boot-starter-social-linkedin/pom.xml index 2bb6dd0060..303c7afd1f 100644 --- a/spring-boot-starters/spring-boot-starter-social-linkedin/pom.xml +++ b/spring-boot-starters/spring-boot-starter-social-linkedin/pom.xml @@ -21,16 +21,14 @@ org.springframework.boot spring-boot-starter - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging @@ -41,42 +39,18 @@ org.springframework.social spring-social-config - - - commons-logging - commons-logging - - org.springframework.social spring-social-core - - - commons-logging - commons-logging - - org.springframework.social - spring-social-linkedin - - - commons-logging - commons-logging - - + spring-social-web org.springframework.social - spring-social-web - - - commons-logging - commons-logging - - + spring-social-linkedin diff --git a/spring-boot-starters/spring-boot-starter-social-twitter/pom.xml b/spring-boot-starters/spring-boot-starter-social-twitter/pom.xml index 6bfc4d04f5..8abc8a30bb 100644 --- a/spring-boot-starters/spring-boot-starter-social-twitter/pom.xml +++ b/spring-boot-starters/spring-boot-starter-social-twitter/pom.xml @@ -21,16 +21,14 @@ org.springframework.boot spring-boot-starter - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging @@ -41,42 +39,18 @@ org.springframework.social spring-social-config - - - commons-logging - commons-logging - - org.springframework.social spring-social-core - - - commons-logging - commons-logging - - org.springframework.social - spring-social-twitter - - - commons-logging - commons-logging - - + spring-social-web org.springframework.social - spring-social-web - - - commons-logging - commons-logging - - + spring-social-twitter diff --git a/spring-boot-starters/spring-boot-starter-test/pom.xml b/spring-boot-starters/spring-boot-starter-test/pom.xml index 3ce1541898..7cc801e9f0 100644 --- a/spring-boot-starters/spring-boot-starter-test/pom.xml +++ b/spring-boot-starters/spring-boot-starter-test/pom.xml @@ -36,7 +36,7 @@ org.springframework - spring-test + spring-core commons-logging @@ -44,5 +44,9 @@ + + org.springframework + spring-test + diff --git a/spring-boot-starters/spring-boot-starter-thymeleaf/pom.xml b/spring-boot-starters/spring-boot-starter-thymeleaf/pom.xml index 3525e818ca..563fb5e9fb 100644 --- a/spring-boot-starters/spring-boot-starter-thymeleaf/pom.xml +++ b/spring-boot-starters/spring-boot-starter-thymeleaf/pom.xml @@ -18,9 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging diff --git a/spring-boot-starters/spring-boot-starter-tomcat/pom.xml b/spring-boot-starters/spring-boot-starter-tomcat/pom.xml index 2895e024bc..8585ca14b0 100644 --- a/spring-boot-starters/spring-boot-starter-tomcat/pom.xml +++ b/spring-boot-starters/spring-boot-starter-tomcat/pom.xml @@ -18,6 +18,10 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.apache.tomcat.embed tomcat-embed-core @@ -30,5 +34,15 @@ org.apache.tomcat.embed tomcat-embed-logging-juli + + org.springframework + spring-core + + + commons-logging + commons-logging + + + diff --git a/spring-boot-starters/spring-boot-starter-velocity/pom.xml b/spring-boot-starters/spring-boot-starter-velocity/pom.xml index 4db24ae15b..c3f606589d 100644 --- a/spring-boot-starters/spring-boot-starter-velocity/pom.xml +++ b/spring-boot-starters/spring-boot-starter-velocity/pom.xml @@ -18,6 +18,10 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter-web + commons-beanutils commons-beanutils @@ -37,16 +41,10 @@ org.apache.velocity velocity-tools - - - commons-logging - commons-logging - - org.springframework - spring-context-support + spring-core commons-logging @@ -55,14 +53,8 @@ - org.springframework.boot - spring-boot-starter-web - - - commons-logging - commons-logging - - + org.springframework + spring-context-support diff --git a/spring-boot-starters/spring-boot-starter-web/pom.xml b/spring-boot-starters/spring-boot-starter-web/pom.xml index 119eadb807..aa3d9d3eb6 100644 --- a/spring-boot-starters/spring-boot-starter-web/pom.xml +++ b/spring-boot-starters/spring-boot-starter-web/pom.xml @@ -21,22 +21,10 @@ org.springframework.boot spring-boot-starter - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-starter-tomcat - - - commons-logging - commons-logging - - com.fasterxml.jackson.core @@ -48,7 +36,7 @@ org.springframework - spring-web + spring-core commons-logging @@ -56,15 +44,13 @@ + + org.springframework + spring-web + org.springframework spring-webmvc - - - commons-logging - commons-logging - - diff --git a/spring-boot-starters/spring-boot-starter-websocket/pom.xml b/spring-boot-starters/spring-boot-starter-websocket/pom.xml index 6d1d2494c8..a176e0ffee 100644 --- a/spring-boot-starters/spring-boot-starter-websocket/pom.xml +++ b/spring-boot-starters/spring-boot-starter-websocket/pom.xml @@ -18,9 +18,17 @@ ${basedir}/../.. + + org.springframework.boot + spring-boot-starter + org.springframework.boot spring-boot-starter-web + + + org.springframework + spring-core commons-logging @@ -31,12 +39,6 @@ org.springframework spring-websocket - - - commons-logging - commons-logging - - org.apache.tomcat.embed diff --git a/spring-boot-starters/spring-boot-starter/pom.xml b/spring-boot-starters/spring-boot-starter/pom.xml index c50a8e8e71..4917bdf3ce 100644 --- a/spring-boot-starters/spring-boot-starter/pom.xml +++ b/spring-boot-starters/spring-boot-starter/pom.xml @@ -21,16 +21,18 @@ org.springframework.boot spring-boot - - - commons-logging - commons-logging - - org.springframework.boot spring-boot-autoconfigure + + + org.springframework.boot + spring-boot-starter-logging + + + org.springframework + spring-core commons-logging @@ -38,10 +40,6 @@ - - org.springframework.boot - spring-boot-starter-logging - org.yaml snakeyaml