// spring-data-rest - Spring Data REST Exporter apply plugin: "base" ext { gradleScriptDir = "${rootProject.projectDir}/gradle" // Logging slf4jVersion = "1.7.5" logbackVersion = "1.0.11" // Spring springVersion = "3.2.6.RELEASE" hateoasVersion = "0.9.0.BUILD-SNAPSHOT" springPluginVersion = "0.8.0.RELEASE" springSecurityVersion = "3.1.3.RELEASE" sdCommonsVersion = "1.7.0.M1" sdJpaVersion = "1.5.0.M1" sdMongoVersion = "1.4.0.M1" sdGemfireVersion = "1.3.3.RELEASE" sdNeo4jVersion = "3.0.0.M1" // Libraries jacksonVersion = "2.3.0" jodaVersion = "2.1" hibernateVersion = "4.2.0.Final" hibernateValidatorVersion = "4.3.1.Final" hsqldbVersion = "2.2.9" evoVersion="1.0.1" // Supporting libraries cglibVersion = "2.2.2" // Testing junitVersion = "4.11" hamcrestVersion = "1.3" jsonpathVersion = "0.8.1" mockitoVersion = "1.9.5" jettyVersion = "8.1.9.v20130131" } buildscript { repositories { maven { url "http://repo.springsource.org/plugins-release" } } dependencies { classpath "org.springframework.build.gradle:docbook-reference-plugin:0.2.6" } } configure(allprojects) { apply plugin: "java" apply plugin: "idea" apply plugin: "eclipse" apply from: "${gradleScriptDir}/ide.gradle" group = "org.springframework.data" configurations.all { // Hack to let Gradle pickup latest SNAPSHOTS resolutionStrategy.cacheChangingModulesFor 0, 'seconds' // Force all core Spring Framework libraries into the same version resolutionStrategy.eachDependency { DependencyResolveDetails details -> if (details.requested.group == 'org.springframework') { details.useVersion "$springVersion" } } 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-snapshot" } } dependencies { // Logging compile "org.slf4j:slf4j-api:$slf4jVersion" runtime "org.slf4j:jcl-over-slf4j:$slf4jVersion" // Testing testCompile "junit:junit:$junitVersion" testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" testCompile "com.jayway.jsonpath:json-path:$jsonpathVersion" testCompile "org.mockito:mockito-core:$mockitoVersion" testCompile "org.springframework:spring-test:$springVersion" testRuntime "org.springframework:spring-context-support:$springVersion" 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 { // Spring Data Commons compile "org.springframework.data:spring-data-commons:$sdCommonsVersion" compile "org.springframework.hateoas:spring-hateoas:$hateoasVersion" compile "org.springframework.plugin:spring-plugin-core:$springPluginVersion" // Spring compile "org.springframework:spring-aop:$springVersion" compile "org.springframework:spring-core:$springVersion" compile "org.springframework:spring-beans:$springVersion" compile "org.springframework:spring-tx:$springVersion" runtime "cglib:cglib-nodep:$cglibVersion" // JSR 303 Validation compile("javax.validation:validation-api:1.0.0.GA", optional) // JODA compile("joda-time:joda-time:$jodaVersion", optional) // Spring Data testCompile("org.springframework.data:spring-data-jpa:$sdJpaVersion", optional) testCompile("org.springframework.data:spring-data-mongodb:$sdMongoVersion", optional) // Evo Inflector compile "org.atteo:evo-inflector:${evoVersion}" // Testing testCompile "org.hsqldb:hsqldb:$hsqldbVersion" testCompile "org.hibernate:hibernate-entitymanager:$hibernateVersion" testRuntime "org.hibernate:hibernate-validator:$hibernateValidatorVersion" // JPA testRuntime("org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final", optional) testRuntime("org.springframework:spring-orm:$springVersion", optional) } } project("spring-data-rest-webmvc") { apply plugin: "maven" description = "Spring Data REST MVC components." dependencies { // Repository Exporter support compile project(":spring-data-rest-core") // Spring compile "org.springframework:spring-web:$springVersion" compile "org.springframework:spring-webmvc:$springVersion" compile("org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final", optional) compile("org.springframework:spring-orm:$springVersion", optional) // APIs compile("javax.servlet:javax.servlet-api:3.0.1", provided) // Jackson compile "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jacksonVersion" compile("com.fasterxml.jackson.datatype:jackson-datatype-hibernate4:$jacksonVersion", optional) // 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" testCompile "org.springframework:spring-tx:$springVersion" testCompile "org.springframework.data:spring-data-jpa:$sdJpaVersion" testCompile "org.springframework.data:spring-data-mongodb:$sdMongoVersion" testCompile "org.springframework.data:spring-data-gemfire:$sdGemfireVersion" testCompile "org.springframework.data:spring-data-neo4j:$sdNeo4jVersion" // JODA testCompile "joda-time:joda-time:$jodaVersion" // Hibernate compile("org.hibernate:hibernate-core:$hibernateVersion", optional) 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 { // Spring compile "org.springframework:spring-aop:$springVersion" compile "org.springframework:spring-aspects:$springVersion" compile "org.springframework:spring-beans:$springVersion" compile "org.springframework:spring-context:$springVersion" compile "org.springframework:spring-context-support:$springVersion" compile "org.springframework:spring-core:$springVersion" compile "org.springframework:spring-expression:$springVersion" compile "org.springframework:spring-jdbc:$springVersion" compile "org.springframework:spring-orm:$springVersion" compile "org.springframework:spring-tx:$springVersion" compile "org.springframework:spring-web:$springVersion" compile "org.springframework:spring-webmvc:$springVersion" 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.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", optional) // 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-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.10" }