diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml
index 6cca2f6810..798126d63f 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
@@ -491,6 +503,12 @@
org.apache.httpcomponents
httpclient
${httpclient.version}
+
+
+ commons-logging
+ commons-logging
+
+
org.apache.httpcomponents
@@ -501,6 +519,12 @@
org.apache.httpcomponents
httpasyncclient
${httpasyncclient.version}
+
+
+ commons-logging
+ commons-logging
+
+
org.apache.tomcat.embed
@@ -546,6 +570,12 @@
org.apache.velocity
velocity-tools
${velocity-tools.version}
+
+
+ commons-logging
+ commons-logging
+
+
org.aspectj
@@ -666,6 +696,12 @@
org.crashub
crash.connectors.ssh
${crashub.version}
+
+
+ commons-logging
+ commons-logging
+
+
org.crashub
@@ -964,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/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-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
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
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);
- }
- }
}
}
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')))
+
+
+