Files
spring-restdocs/build.gradle
Andy Wilkinson a9c4732a83 Update javadoc to be Java 11 compatible
Closes gh-687
2020-06-08 16:40:48 +01:00

271 lines
7.3 KiB
Groovy

buildscript {
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/plugins-snapshot' }
maven { url 'https://repo.spring.io/plugins-release' }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo.spring.io/snapshot' }
}
dependencies {
classpath 'org.springframework.build.gradle:propdeps-plugin:0.0.7'
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2'
classpath 'io.spring.gradle:dependency-management-plugin:1.0.8.RELEASE'
classpath "io.spring.javaformat:spring-javaformat-gradle-plugin:$javaFormatVersion"
classpath 'io.spring.nohttp:nohttp-gradle:0.0.2.RELEASE'
}
}
allprojects {
group = 'org.springframework.restdocs'
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/libs-snapshot' }
}
}
apply plugin: 'samples'
apply plugin: 'org.sonarqube'
apply plugin: 'io.spring.nohttp'
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'
}
}
nohttp {
source.exclude 'samples/rest-notes-slate/slate/source/javascripts/lib/_jquery*.js'
source.exclude 'buildSrc/.gradle/**'
source.exclude '**/build/**'
source.exclude '**/target/**'
whitelistFile = project.file('config/nohttp/whitelist.lines')
}
ext {
springVersion = '5.0.15.RELEASE'
javadocLinks = [
'https://docs.oracle.com/javase/8/docs/api/',
"https://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'
apply plugin: 'matrixtest'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencyManagement {
imports {
mavenBom "org.springframework:spring-framework-bom:$springVersion"
}
dependencies {
dependency 'com.fasterxml.jackson.core:jackson-databind:2.9.5'
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:2.0.0.Final'
dependency 'junit:junit:4.12'
dependency 'io.rest-assured:rest-assured:3.0.7'
dependency 'org.apache.pdfbox:pdfbox:2.0.7'
dependency 'org.assertj:assertj-core:3.11.1'
dependency 'org.asciidoctor:asciidoctorj-pdf:1.5.0-alpha.18'
dependency 'org.hamcrest:hamcrest-core:1.3'
dependency 'org.hamcrest:hamcrest-library:1.3'
dependency 'org.hibernate.validator:hibernate-validator:6.0.9.Final'
dependency 'org.jacoco:org.jacoco.agent:0.7.9'
dependency 'org.javamoney:moneta:1.1'
dependency 'org.jruby:jruby-complete:9.1.13.0'
dependency 'org.junit.jupiter:junit-jupiter-api:5.0.0'
dependency 'org.mockito:mockito-core:1.10.19'
dependency 'org.springframework.hateoas:spring-hateoas:0.23.0.RELEASE'
dependency 'org.synchronoss.cloud:nio-multipart-parser:1.1.0'
}
}
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' ]
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
}
def codeProjects = subprojects - project(":docs")
configure(codeProjects) {
apply plugin: 'io.spring.javaformat'
apply plugin: 'checkstyle'
apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle"
checkstyle {
configFile = rootProject.file('config/checkstyle/checkstyle.xml')
configProperties = [ 'checkstyle.config.dir' : rootProject.file('config/checkstyle') ]
toolVersion = '8.22'
}
configurations {
jacoco
}
dependencies {
checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:$javaFormatVersion"
jacoco 'org.jacoco:org.jacoco.agent::runtime'
}
}
def publishedCodeProjects = codeProjects.findAll { codeProject -> !codeProject.name.contains('spring-restdocs-asciidoctor-')}
configure(publishedCodeProjects) { subproject ->
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'
options.encoding = 'UTF-8'
options.source = '1.8'
}
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-webtestclient:install'
dependOn 'spring-restdocs-asciidoctor:install'
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"
}
webTestClient {
workingDir "$projectDir/samples/web-test-client"
}
slate {
workingDir "$projectDir/samples/rest-notes-slate"
build false
}
junit5 {
workingDir "$projectDir/samples/junit5"
}
}
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 publishedCodeProjects.findAll { it.name != 'spring-restdocs-asciidoctor' }
.collect { it.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
}