From 1b42c4c219869245be47667eedeaebffc845a7a8 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 29 Jan 2013 18:20:34 -0800 Subject: [PATCH] Use propdeps Gradle plugin Use the Spring propdeps gradle plugin to handle all 'provided' and 'optional' dependencies. Maven dependencies are now also sorted to to ease diff comparisons against older POMs. --- build.gradle | 68 ++++++++++++++++++++++---------------------- publish-maven.gradle | 21 ++++---------- 2 files changed, 40 insertions(+), 49 deletions(-) diff --git a/build.gradle b/build.gradle index a783cec5..c54ab49c 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ buildscript { maven { url "http://repo.springsource.org/plugins-release" } } dependencies { + classpath("org.springframework.build.gradle:propdeps-plugin:0.0.3") classpath("org.springframework.build.gradle:docbook-reference-plugin:0.2.4") } } @@ -15,6 +16,7 @@ configure(allprojects) { configure(subprojects) { subproject -> apply plugin: "java" + apply plugin: "propdeps" apply from: "${rootProject.projectDir}/publish-maven.gradle" sourceCompatibility=1.5 @@ -86,15 +88,14 @@ project("spring-binding") { description = "Spring Binding" dependencies { - compile("javax.el:el-api:2.2", provided) + provided("javax.el:el-api:2.2") compile("commons-logging:commons-logging:1.1.1") compile("opensymphony:ognl:2.6.11") compile("org.springframework:spring-beans:$springVersion") compile("org.springframework:spring-context:$springVersion") compile("org.springframework:spring-core:$springVersion") compile("org.springframework:spring-expression:$springVersion") - testCompile("log4j:log4j:$log4jVersion") { dep -> - optional dep + testCompile("log4j:log4j:$log4jVersion") { exclude group: "javax.mail", module: "mail" exclude group: "javax.jms", module: "jms" exclude group: "com.sun.jdmk", module: "jmxtools" @@ -120,19 +121,18 @@ project("spring-js") { dependencies { compile(project(":spring-js-resources")) compile("commons-logging:commons-logging:1.1.1") - compile("javax.servlet:servlet-api:2.5", provided) - compile("org.apache.tiles:tiles-api:2.1.2", optional) - compile("org.apache.tiles:tiles-core:2.1.2", optional) - compile("org.apache.tiles:tiles-jsp:2.1.2", optional) - compile("org.apache.tiles:tiles-servlet:2.1.2", optional) + provided("javax.servlet:servlet-api:2.5") + optional("org.apache.tiles:tiles-api:2.1.2") + optional("org.apache.tiles:tiles-core:2.1.2") + optional("org.apache.tiles:tiles-jsp:2.1.2") + optional("org.apache.tiles:tiles-servlet:2.1.2") compile("org.springframework:spring-beans:$springVersion") compile("org.springframework:spring-context:$springVersion") compile("org.springframework:spring-core:$springVersion") compile("org.springframework:spring-web:$springVersion") compile("org.springframework:spring-webmvc:$springVersion") - testCompile("javax.servlet:jstl:1.2", provided) - testCompile("log4j:log4j:$log4jVersion") { dep -> - optional dep + testCompile("javax.servlet:jstl:1.2") + testCompile("log4j:log4j:$log4jVersion") { exclude group: "javax.mail", module: "mail" exclude group: "javax.jms", module: "jms" exclude group: "com.sun.jdmk", module: "jmxtools" @@ -149,28 +149,27 @@ project("spring-webflow") { compile(project(":spring-binding")) compile(project(":spring-js")) compile("commons-logging:commons-logging:1.1.1") - compile("javax.el:el-api:2.2", provided) - compile("javax.persistence:persistence-api:1.0.2", provided) - compile("javax.servlet:servlet-api:2.5", provided) - compile("javax.portlet:portlet-api:2.0", provided) - compile("javax.transaction:transaction-api:1.1-rev-1", provided) - compile("junit:junit:3.8.2", provided) + provided("javax.el:el-api:2.2") + provided("javax.persistence:persistence-api:1.0.2") + provided("javax.servlet:servlet-api:2.5") + provided("javax.portlet:portlet-api:2.0") + provided("javax.transaction:transaction-api:1.1-rev-1") + provided("junit:junit:3.8.2") compile("opensymphony:ognl:2.6.11") - compile("org.hibernate:hibernate:3.2.7.ga") { dep -> - optional dep + optional("org.hibernate:hibernate:3.2.7.ga") { exclude group: "org.slf4j", module: "slf4j-api" } - compile("org.slf4j:slf4j-api:$slf4jVersion", optional) + optional("org.slf4j:slf4j-api:$slf4jVersion") compile("org.springframework:spring-beans:$springVersion") compile("org.springframework:spring-context:$springVersion") compile("org.springframework:spring-core:$springVersion") compile("org.springframework:spring-expression:$springVersion") - compile("org.springframework:spring-orm:$springVersion", optional) - compile("org.springframework:spring-tx:$springVersion", optional) + optional("org.springframework:spring-orm:$springVersion") + optional("org.springframework:spring-tx:$springVersion") compile("org.springframework:spring-web:$springVersion") compile("org.springframework:spring-webmvc:$springVersion") - compile("org.springframework:spring-webmvc-portlet:$springVersion", optional) - compile("org.springframework.security:spring-security-core:$springSecurityVersion", optional) + optional("org.springframework:spring-webmvc-portlet:$springVersion") + optional("org.springframework.security:spring-security-core:$springSecurityVersion") testCompile("javax.validation:validation-api:1.0.0.GA") testCompile("org.apache.openjpa:openjpa:1.1.0") testCompile("org.apache.openjpa:openjpa-lib:1.1.0") @@ -191,22 +190,23 @@ project("spring-faces") { compile(project(":spring-binding")) compile(project(":spring-webflow")) compile("commons-logging:commons-logging:1.1.1") - compile("javax.servlet:servlet-api:2.5", provided) - compile("javax.portlet:portlet-api:2.0", provided) + provided("javax.servlet:servlet-api:2.5") + provided("javax.portlet:portlet-api:2.0") + provided("javax.el:el-api:2.2") compile("org.springframework:spring-beans:$springVersion") compile("org.springframework:spring-context:$springVersion") compile("org.springframework:spring-core:$springVersion") compile("org.springframework:spring-expression:$springVersion") compile("org.springframework:spring-web:$springVersion") compile("org.springframework:spring-webmvc:$springVersion") - compile("org.springframework.security:spring-security-core:$springSecurityVersion", optional) - compile("org.springframework.security:spring-security-web:$springSecurityVersion", optional) - compile("com.sun.facelets:jsf-facelets:1.1.14", optional) - compile("com.sun.faces:jsf-api:2.1.7", provided) - compile("com.sun.faces:jsf-impl:2.1.7", provided) - compile("org.apache.myfaces.core:myfaces-impl:2.1.7", provided) - testCompile("log4j:log4j:$log4jVersion") { dep -> - optional dep + optional("org.springframework.security:spring-security-core:$springSecurityVersion") + optional("org.springframework.security:spring-security-web:$springSecurityVersion") + optional("org.springframework:spring-webmvc-portlet:$springVersion") + optional("com.sun.facelets:jsf-facelets:1.1.14") + provided("com.sun.faces:jsf-api:2.1.7") + provided("com.sun.faces:jsf-impl:2.1.7") + provided("org.apache.myfaces.core:myfaces-impl:2.1.7") + testCompile("log4j:log4j:$log4jVersion") { exclude group: "javax.mail", module: "mail" exclude group: "javax.jms", module: "jms" exclude group: "com.sun.jdmk", module: "jmxtools" diff --git a/publish-maven.gradle b/publish-maven.gradle index 0ec323e4..a02e5a30 100644 --- a/publish-maven.gradle +++ b/publish-maven.gradle @@ -1,10 +1,4 @@ -apply plugin: "maven" - -ext.optionalDeps = [] -ext.providedDeps = [] - -ext.optional = { optionalDeps << it } -ext.provided = { providedDeps << it } +apply plugin: "propdeps-maven" install { repositories.mavenInstaller { @@ -14,19 +8,16 @@ install { def customizePom(pom, gradleProject) { pom.whenConfigured { generatedPom -> - // respect "optional" and "provided" dependencies - gradleProject.optionalDeps.each { dep -> - generatedPom.dependencies.find { it.artifactId == dep.name }?.optional = true - } - gradleProject.providedDeps.each { dep -> - generatedPom.dependencies.find { it.artifactId == dep.name }?.scope = "provided" - } - // eliminate test-scoped dependencies (no need in maven central poms) generatedPom.dependencies.removeAll { dep -> dep.scope == "test" } + // sort to make pom dependencies order consistent to ease comparison of older poms + generatedPom.dependencies = generatedPom.dependencies.sort { dep -> + "$dep.scope:$dep.groupId:$dep.artifactId" + } + // add all items necessary for maven central publication generatedPom.project { name = gradleProject.description