// spring-data-rest - Spring Data REST Exporter apply plugin: "base" ext { gradleScriptDir = "${rootProject.projectDir}/gradle" // Logging slf4jVersion = "1.7.2" logbackVersion = "1.0.9" // Spring springVersion = "3.1.4.RELEASE" spring32Version = "3.2.1.RELEASE" hateoasVersion = "0.4.0.RELEASE" springPluginVersion = "0.8.0.RELEASE" springSecurityVersion = "3.1.3.RELEASE" sdCommonsVersion = "1.5.0.RELEASE" sdJpaVersion = "1.3.0.RELEASE" sdMongoVersion = "1.2.0.RELEASE" sdGemfireVersion = "1.3.0.M1" sdNeo4jVersion = "2.3.0.BUILD-SNAPSHOT" // Libraries guavaVersion = "13.0.1" jacksonVersion = "2.1.2" jodaVersion = "2.1" hibernateVersion = "4.1.9.Final" hibernateValidatorVersion = "4.3.1.Final" hsqldbVersion = "2.2.9" // Supporting libraries cglibVersion = "2.2.2" // Testing junitVersion = "4.11" hamcrestVersion = "1.3" jsonpathVersion = "0.8.1" jmockVersion = "2.6.0" jettyVersion = "8.1.9.v20130131" } buildscript { repositories { //maven { url "http://repo.springsource.org/plugins-release" } maven { url "http://repo.springsource.org/plugins-snapshot" } } dependencies { classpath "org.springframework.build.gradle:docbook-reference-plugin:0.2.7-SNAPSHOT" } } configure(allprojects) { apply plugin: "java" apply plugin: "idea" apply plugin: "eclipse" apply from: "${gradleScriptDir}/ide.gradle" group = "org.springframework.data" configurations.all { exclude group: "commons-logging" exclude module: "slf4j-log4j12" } project.sourceCompatibility = 1.6 project.targetCompatibility = 1.6 [compileJava, compileTestJava]*.options*.compilerArgs = ["-Xlint:none", "-g"] sourceSets.test.resources.srcDirs = ["src/test/resources", "src/test/java"] repositories { maven { url "http://repo.springsource.org/libs-release" } maven { url "http://repo.springsource.org/libs-milestone" } //maven { url "http://repo.springsource.org/libs-snapshot" } maven { url "http://oss.sonatype.org/content/repositories/releases" } maven { url "http://m2.neo4j.org/releases" } mavenLocal() } dependencies { // Logging compile "org.slf4j:slf4j-api:$slf4jVersion" runtime "org.slf4j:jcl-over-slf4j:$slf4jVersion" // Testing testCompile "junit:junit-dep:$junitVersion" testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" testCompile "com.jayway.jsonpath:json-path:$jsonpathVersion" testCompile "org.jmock:jmock-junit4:$jmockVersion" testCompile "org.jmock:jmock-legacy:$jmockVersion" testCompile("org.springframework:spring-test:$springVersion") { force = true } testRuntime("org.springframework:spring-context-support:$springVersion") { force = true } testRuntime "ch.qos.logback:logback-classic:$logbackVersion" } } configure(subprojects) { subproject -> apply from: "${gradleScriptDir}/maven.gradle" javadoc { options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED options.author = true options.header = subproject.name //options.overview = "${projectDir}/src/api/overview.html" } task sourcesJar(type: Jar, dependsOn: classes) { classifier = "sources" from sourceSets.main.allJava } task javadocJar(type: Jar) { classifier = "javadoc" from javadoc } artifacts { archives sourcesJar archives javadocJar } } project("spring-data-rest-core") { apply plugin: "maven" description = "Spring Data REST core components." configurations { compile.extendsFrom providedCompile } dependencies { // Google Guava compile "com.google.guava:guava:$guavaVersion" // Spring compile("org.springframework:spring-aop:$springVersion") { force = true } compile("org.springframework:spring-core:$springVersion") { force = true } compile("org.springframework:spring-beans:$springVersion") { force = true } compile("org.springframework:spring-web:$springVersion") { force = true } runtime "cglib:cglib-nodep:$cglibVersion" // Spring HATEOAS compile("org.springframework.hateoas:spring-hateoas:$hateoasVersion") { exclude module: "spring-webmvc" } // Spring Data Commons providedCompile("org.springframework.data:spring-data-commons:$sdCommonsVersion") { exclude module: "slf4j-api" exclude module: "jcl-over-slf4j" } } } project("spring-data-rest-repository") { apply plugin: "maven" description = "Spring Data REST Repository integration." dependencies { // Exporter core compile project(":spring-data-rest-core") // JSR-305 compile "com.google.code.findbugs:jsr305:2.0.1" // JODA compile("joda-time:joda-time:$jodaVersion", optional) // Jackson JSON compile "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion" compile("com.fasterxml.jackson.datatype:jackson-datatype-joda:$jacksonVersion", optional) compile("com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:$jacksonVersion", optional) // ROME //compile "rome:rome:1.0" // JPA compile("org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final", optional) // Spring Plugin compile "org.springframework.plugin:spring-plugin-core:$springPluginVersion" // Spring Data compile("org.springframework.data:spring-data-jpa:$sdJpaVersion", optional) compile("org.springframework.data:spring-data-mongodb:$sdMongoVersion", optional) // JSR 303 Validation compile("javax.validation:validation-api:1.0.0.GA", optional) // Testing testCompile "org.hsqldb:hsqldb:$hsqldbVersion" testCompile "org.hibernate:hibernate-entitymanager:$hibernateVersion" testRuntime "org.hibernate:hibernate-validator:$hibernateValidatorVersion" } } project("spring-data-rest-webmvc") { apply plugin: "maven" description = "Spring Data REST MVC components." dependencies { // Repository Exporter support compile project(":spring-data-rest-repository") // Spring compile("org.springframework:spring-webmvc:$springVersion") { force = true } // APIS compile("javax.servlet:javax.servlet-api:3.0.1", provided) // Testing testCompile "org.eclipse.jetty:jetty-servlet:$jettyVersion" testCompile "org.eclipse.jetty:jetty-webapp:$jettyVersion" testCompile "org.mozilla:rhino:1.7R4" // Spring Data testCompile("org.springframework:spring-core:$springVersion") { force = true } testCompile("org.springframework:spring-tx:$springVersion") { force = true } testCompile "org.springframework.data:spring-data-jpa:$sdJpaVersion" testCompile "org.springframework.data:spring-data-mongodb:$sdMongoVersion" testCompile("org.springframework.data:spring-data-gemfire:$sdGemfireVersion") { exclude group: "junit" exclude group: "org.jmock" exclude group: "org.hamcrest" exclude module: "spring-test" } // JODA testCompile "joda-time:joda-time:$jodaVersion" // Jackson testCompile "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jacksonVersion" testCompile "com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:$jacksonVersion" // Hibernate testRuntime "org.hibernate:hibernate-entitymanager:$hibernateVersion" testRuntime "org.hibernate:hibernate-validator:$hibernateValidatorVersion" // HSQL testRuntime "org.hsqldb:hsqldb:$hsqldbVersion" } } project("spring-data-rest-example") { apply plugin: "war" description = "Spring Data REST example web application." dependencies { compile project(":spring-data-rest-webmvc") // Logging runtime "ch.qos.logback:logback-classic:$logbackVersion" // JPA compile "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final" // Spring Data compile "org.springframework.data:spring-data-jpa:$sdJpaVersion" compile "org.springframework.data:spring-data-mongodb:$sdMongoVersion" compile "org.springframework.data:spring-data-neo4j:$sdNeo4jVersion" compile("org.springframework.data:spring-data-gemfire:$sdGemfireVersion") { exclude group: "junit", module: "junit" exclude group: "org.jmock" exclude group: "org.hamcrest" exclude module: "spring-test" } // Spring Security //compile "org.springframework.security:spring-security-config:$springSecurityVersion" //compile "org.springframework.security:spring-security-web:$springSecurityVersion" // JODA compile "joda-time:joda-time:$jodaVersion" // Jackson compile "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jacksonVersion" compile "com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:$jacksonVersion" // Hibernate runtime "org.hibernate:hibernate-entitymanager:$hibernateVersion" runtime "org.hibernate:hibernate-validator:$hibernateValidatorVersion" // HSQL runtime "org.hsqldb:hsqldb:$hsqldbVersion" } } configure(rootProject) { apply plugin: "docbook-reference" description = "Spring Data REST Exporter" reference { sourceDir = file("src/reference/docbook") pdfFilename = "spring-data-rest-reference.pdf" } // don"t publish the default jar for the root project configurations.archives.artifacts.clear() task api(type: Javadoc) { group = "Documentation" description = "Generates aggregated Javadoc API documentation." title = "${rootProject.description} ${version} API" options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED options.author = true options.header = rootProject.description options.overview = "src/api/overview.html" options.splitIndex = true options.linksOffline "http://docs.oracle.com/javase/6/docs/api/", "http://docs.oracle.com/javase/6/docs/api/" options.linksOffline "http://static.springsource.org/spring/docs/3.1.x/javadoc-api/", "http://static.springsource.org/spring/docs/3.1.x/javadoc-api/" options.linksOffline "http://static.springsource.org/spring-data/data-commons/docs/current/api/", "http://static.springsource.org/spring-data/data-commons/docs/current/api/" source subprojects.collect { project -> project.sourceSets.main.allJava } destinationDir = new File(buildDir, "api") classpath = files(subprojects.collect { project -> project.sourceSets.main.compileClasspath }) maxMemory = "1024m" } task docsZip(type: Zip) { group = "Distribution" baseName = "spring-data-rest" classifier = "docs" description = "Builds -${classifier} archive containing api and reference " + "for deployment to http://static.springframework.org/spring-data-rest/docs." from("src/dist") { include "changelog.txt" } from(api) { into "api" } from(reference) { into "reference" } } artifacts { archives docsZip } dependencies { // For integration testing testCompile project(":spring-data-rest-core") testCompile project(":spring-data-rest-repository") testCompile project(":spring-data-rest-webmvc") } idea { module { downloadJavadoc = false downloadSources = true } project { ipr { withXml { xml -> xml.node.component.find { it.@name == "VcsDirectoryMappings" }.mapping.@vcs = "Git" xml.node.component.find { it.@name == "ProjectRootManager" }.output.@url = "file://\$PROJECT_DIR\$/build" } } } } } task wrapper(type: Wrapper) { description = "Generates gradlew[.bat] scripts" gradleVersion = "1.3" doLast() { def gradleOpts = "-XX:MaxPermSize=1024m -Xmx1024m" def gradleBatOpts = "$gradleOpts -XX:MaxHeapSize=256m" File wrapperFile = file("gradlew") wrapperFile.text = wrapperFile.text.replace("DEFAULT_JVM_OPTS=", "GRADLE_OPTS=\"$gradleOpts \$GRADLE_OPTS\"\nDEFAULT_JVM_OPTS=") File wrapperBatFile = file("gradlew.bat") wrapperBatFile.text = wrapperBatFile.text.replace("set DEFAULT_JVM_OPTS=", "set GRADLE_OPTS=$gradleBatOpts %GRADLE_OPTS%\nset DEFAULT_JVM_OPTS=") } }