buildscript { repositories { mavenCentral() maven { url 'https://repo.spring.io/plugins-release' } maven { url 'https://plugins.gradle.org/m2/' } } dependencies { classpath 'io.spring.gradle:dependency-management-plugin:0.5.5.RELEASE' classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7' classpath 'io.spring.gradle:spring-io-plugin:0.0.5.RELEASE' classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2' } } allprojects { group = 'org.springframework.restdocs' repositories { mavenCentral() } } apply plugin: 'samples' apply plugin: 'org.sonarqube' sonarqube { properties { property 'sonar.jacoco.reportPath', "${buildDir.name}/jacoco.exec" property 'sonar.java.coveragePlugin', 'jacoco' property 'sonar.links.ci', 'https://build.spring.io/browse/SRD' property 'sonar.links.homepage', 'https://github.com/spring-projects/spring-restdocs' property 'sonar.links.issue', 'https://github.com/spring-projects/spring-restdocs' property 'sonar.links.scm', 'https://github.com/spring-projects/spring-restdocs' } } ext { springVersion = '4.3.1.RELEASE' javadocLinks = [ 'http://docs.oracle.com/javase/8/docs/api/', "http://docs.spring.io/spring-framework/docs/$springVersion/javadoc-api/", 'https://docs.jboss.org/hibernate/stable/beanvalidation/api/', 'https://docs.jboss.org/hibernate/stable/validator/api/' ] as String[] } subprojects { apply plugin: 'io.spring.dependency-management' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'propdeps' apply plugin: 'propdeps-eclipse' apply plugin: 'propdeps-maven' apply plugin: 'maven' sourceCompatibility = 1.7 targetCompatibility = 1.7 dependencyManagement { imports { mavenBom "org.springframework:spring-framework-bom:$springVersion" } dependencies { dependency 'com.fasterxml.jackson.core:jackson-databind:2.5.5' dependency 'com.jayway.restassured:rest-assured:2.8.0' dependency 'com.samskivert:jmustache:1.12' dependency 'commons-codec:commons-codec:1.10' dependency 'javax.servlet:javax.servlet-api:3.1.0' dependency 'javax.validation:validation-api:1.1.0.Final' dependency 'junit:junit:4.12' dependency 'org.asciidoctor:asciidoctorj:1.5.3.1' dependency 'org.hamcrest:hamcrest-core:1.3' dependency 'org.hamcrest:hamcrest-library:1.3' dependency 'org.hibernate:hibernate-validator:5.2.2.Final' dependency 'org.mockito:mockito-core:1.10.19' dependency 'org.springframework.hateoas:spring-hateoas:0.19.0.RELEASE' dependency 'org.jacoco:org.jacoco.agent:0.7.7.201606060606' } } test { testLogging { exceptionFormat "full" } } eclipseJdt { inputFile = rootProject.file('config/eclipse/org.eclipse.jdt.core.prefs') doLast { project.file('.settings/org.eclipse.jdt.ui.prefs').withWriter { writer -> writer << rootProject.file('config/eclipse/org.eclipse.jdt.ui.prefs').text } } } compileJava { options.compilerArgs = [ '-Xlint:deprecation', '-Xlint:-options', '-Werror' ] } } configure(subprojects - project(":docs")) { subproject -> apply plugin: 'checkstyle' apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle" if (project.hasProperty('platformVersion')) { apply plugin: 'spring-io' repositories { maven { url "https://repo.spring.io/libs-snapshot" } } dependencyManagement { springIoTestRuntime { imports { mavenBom "io.spring.platform:platform-bom:${platformVersion}" } } } } checkstyle { configFile = rootProject.file('config/checkstyle/checkstyle.xml') configProperties = [ 'checkstyle.config.dir' : rootProject.file('config/checkstyle') ] toolVersion = '6.10.1' } configurations { jacoco } dependencies { jacoco 'org.jacoco:org.jacoco.agent::runtime' } javadoc { description = "Generates project-level javadoc for use in -javadoc jar" options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED options.author = true options.header = "Spring REST Docs $version" options.docTitle = "${options.header} API" options.links = javadocLinks options.addStringOption '-quiet' } task sourcesJar(type: Jar) { classifier = 'sources' from project.sourceSets.main.allSource } task javadocJar(type: Jar) { classifier = "javadoc" from javadoc } artifacts { archives sourcesJar archives javadocJar } } samples { dependOn 'spring-restdocs-core:install' dependOn 'spring-restdocs-mockmvc:install' dependOn 'spring-restdocs-restassured:install' dependOn 'spring-restdocs-asciidoctor:install' restNotesGrails { workingDir "$projectDir/samples/rest-notes-grails" } restNotesSpringHateoas { workingDir "$projectDir/samples/rest-notes-spring-hateoas" } restNotesSpringDataRest { workingDir "$projectDir/samples/rest-notes-spring-data-rest" } testNg { workingDir "$projectDir/samples/testng" } restAssured { workingDir "$projectDir/samples/rest-assured" } slate { workingDir "$projectDir/samples/rest-notes-slate" build false } } task api (type: Javadoc) { group = "Documentation" description = "Generates aggregated Javadoc API documentation." dependsOn { subprojects.collect { it.tasks.getByName("jar") } } options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED options.author = true options.header = "Spring REST Docs $version" options.splitIndex = true options.links = javadocLinks options.addStringOption '-quiet' source subprojects.collect { project -> project.sourceSets.main.allJava } destinationDir = new File(buildDir, "api") doFirst { classpath = files(subprojects.collect { it.sourceSets.main.compileClasspath }) } } task docsZip(type: Zip, dependsOn: [':docs:asciidoctor', ':api', ':buildSamples']) { group = 'Distribution' baseName = 'spring-restdocs' classifier = 'docs' description = "Builds -${classifier} archive containing API and reference documentation" destinationDir = file("${project.buildDir}/distributions") from(project.tasks.findByPath(':docs:asciidoctor')) { into 'reference' } from(api) { into 'api' } from(file('samples/rest-notes-spring-hateoas/build/asciidoc/html5')) { into 'samples/restful-notes' } from(file('samples/rest-notes-slate/build/docs')) { into 'samples/slate' } } configurations { archives } artifacts { archives docsZip }