Files
spring-restdocs/build.gradle
Andy Wilkinson 319bd139fc Polish contribution and rework to use default attribute rather than macro
Rather than introducing a custom macro, this commit opts to implicitly
configure the snippets attribute instead. The attribute is configured
will the path into which snippets are generated, relative to the
directory that contains the Asciidoctor document that is being
rendered.

The samples and documentation have been updated to use the new
spring-restdocs-asciidoctor module and the implicitly configured
snippets attribute.

Closes gh-297
2016-10-21 22:42:11 +01:00

250 lines
6.1 KiB
Groovy

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'
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
}