278 lines
6.3 KiB
Groovy
278 lines
6.3 KiB
Groovy
/*
|
|
* Copyright 2016-2020 the original author or authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* https://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
plugins {
|
|
id 'checkstyle'
|
|
id 'io.spring.nohttp' version '0.0.11'
|
|
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
|
|
id 'io.spring.javaformat' version '0.0.43'
|
|
}
|
|
|
|
description = "Spring CredHub"
|
|
|
|
ext {
|
|
springVersion = "5.3.23"
|
|
springBootVersion = "2.7.5"
|
|
springSecurityVersion = "5.7.5"
|
|
reactorVersion = "2020.0.24"
|
|
|
|
okHttp3Version = "4.9.3"
|
|
httpClientVersion = "4.5.13"
|
|
nettyVersion = "4.1.84.Final"
|
|
|
|
junitVersion = "5.7.2"
|
|
mockitoVersion = "3.9.0"
|
|
assertJVersion = "3.19.0"
|
|
|
|
javadocLinks = [
|
|
"https://docs.oracle.com/javase/8/docs/api/",
|
|
'https://docs.spring.io/spring/docs/current/javadoc-api/',
|
|
] as String[]
|
|
}
|
|
|
|
configure(allprojects) {
|
|
apply plugin: 'java'
|
|
apply plugin: 'eclipse'
|
|
|
|
apply plugin: "io.spring.dependency-management"
|
|
|
|
group = 'org.springframework.credhub'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url 'https://repo.spring.io/release' }
|
|
}
|
|
if (version =~ /((-M|-RC)[0-9]+|-SNAPSHOT)$/) {
|
|
repositories {
|
|
maven { url 'https://repo.spring.io/milestone' }
|
|
}
|
|
}
|
|
if (version.endsWith('-SNAPSHOT')) {
|
|
repositories {
|
|
maven { url 'https://repo.spring.io/snapshot' }
|
|
}
|
|
}
|
|
}
|
|
|
|
configure(allprojects) {
|
|
apply plugin: 'checkstyle'
|
|
apply plugin: 'io.spring.nohttp'
|
|
apply plugin: 'io.spring.javaformat'
|
|
|
|
checkstyle {
|
|
toolVersion = "8.45.1"
|
|
configDirectory.set(rootProject.file("src/checkstyle"))
|
|
}
|
|
|
|
nohttp {
|
|
allowlistFile = rootProject.file("src/nohttp/allowlist.lines")
|
|
}
|
|
|
|
dependencies {
|
|
checkstyle("io.spring.javaformat:spring-javaformat-checkstyle:0.0.43")
|
|
}
|
|
}
|
|
|
|
configure(libraryProjects) {
|
|
apply plugin: 'java-library'
|
|
|
|
java {
|
|
withJavadocJar()
|
|
withSourcesJar()
|
|
}
|
|
|
|
javadoc {
|
|
options.encoding = 'UTF-8'
|
|
options.memberLevel = JavadocMemberLevel.PROTECTED
|
|
options.author = true
|
|
options.header = project.name
|
|
}
|
|
|
|
sourcesJar {
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
archiveClassifier.set "sources"
|
|
from sourceSets.main.allJava
|
|
}
|
|
|
|
javadocJar {
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
archiveClassifier.set "javadoc"
|
|
from javadoc
|
|
}
|
|
}
|
|
|
|
configure(publishedProjects) {
|
|
apply from: "${rootProject.projectDir}/publish-maven.gradle"
|
|
}
|
|
|
|
subprojects {
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.encoding = 'UTF-8'
|
|
}
|
|
|
|
java {
|
|
registerFeature('reactive') {
|
|
usingSourceSet(sourceSets.main)
|
|
}
|
|
registerFeature('security') {
|
|
usingSourceSet(sourceSets.main)
|
|
}
|
|
registerFeature('httpclient') {
|
|
usingSourceSet(sourceSets.main)
|
|
}
|
|
registerFeature('okhttp') {
|
|
usingSourceSet(sourceSets.main)
|
|
}
|
|
registerFeature('netty') {
|
|
usingSourceSet(sourceSets.main)
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
|
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
|
|
}
|
|
|
|
tasks.withType(Test).forEach { Test task ->
|
|
task.with {
|
|
// enable JUnit 5
|
|
useJUnitPlatform()
|
|
scanForTestClasses = true
|
|
group = "verification"
|
|
|
|
testLogging {
|
|
exceptionFormat = "full"
|
|
events = ["passed", "skipped", "failed"]
|
|
}
|
|
|
|
// print failed tests after the execution
|
|
def failedTests = []
|
|
afterTest { test, result ->
|
|
if (result.resultType == TestResult.ResultType.FAILURE) {
|
|
failedTests << test
|
|
}
|
|
}
|
|
|
|
// create a summary after the execution
|
|
afterSuite { desc, result ->
|
|
if (!desc.parent) {
|
|
println "\nTest result: ${result.resultType}"
|
|
println "Test summary: ${result.testCount} tests, " +
|
|
"${result.successfulTestCount} succeeded, " +
|
|
"${result.failedTestCount} failed, " +
|
|
"${result.skippedTestCount} skipped"
|
|
|
|
failedTests.each { test -> println "FAILED test: ${test.className} > ${test.name}" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
configure(rootProject) {
|
|
task sourcesJar(type: Jar) {
|
|
archiveClassifier.set('sources')
|
|
from sourceSets.main.allSource
|
|
}
|
|
|
|
task javadocJar(type: Jar) {
|
|
archiveClassifier.set('javadoc')
|
|
from javadoc.destinationDir
|
|
}
|
|
|
|
task api(type: Javadoc) {
|
|
group = "Documentation"
|
|
description = "Generates aggregated Javadoc API documentation."
|
|
title = "${rootProject.description} ${version} API"
|
|
|
|
options.encoding = 'UTF-8'
|
|
options.memberLevel = JavadocMemberLevel.PROTECTED
|
|
options.author = true
|
|
options.header = rootProject.description
|
|
options.links(project.ext.javadocLinks)
|
|
|
|
source subprojects.collect { project ->
|
|
project.sourceSets.main.allJava
|
|
}
|
|
|
|
classpath = files(subprojects.collect { project ->
|
|
project.sourceSets.main.compileClasspath
|
|
})
|
|
|
|
exclude '**/spring-credhub-integration-tests/**', '**/spring-credhub-reactive-integration-tests/**'
|
|
|
|
maxMemory = "1024m"
|
|
destinationDir = new File(buildDir, "api")
|
|
}
|
|
|
|
task docsZip(type: Zip, dependsOn: [':spring-credhub-docs:asciidoctor']) {
|
|
group = 'Distribution'
|
|
archiveClassifier.set('docs')
|
|
description = "Builds -${archiveClassifier} archive containing api and reference " +
|
|
"for deployment at docs.spring.io/spring-credhub/docs."
|
|
|
|
from(api) {
|
|
into 'api'
|
|
}
|
|
from(project.tasks.findByPath(':spring-credhub-docs:asciidoctor')) {
|
|
into 'reference'
|
|
}
|
|
}
|
|
|
|
artifacts {
|
|
archives docsZip
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
mavenJava(MavenPublication) {
|
|
artifact sourcesJar
|
|
artifact javadocJar
|
|
artifact docsZip
|
|
}
|
|
}
|
|
}
|
|
|
|
task dist(dependsOn: assemble) {
|
|
group = "Distribution"
|
|
description = "Builds -dist and -docs distribution archives."
|
|
}
|
|
}
|
|
|
|
def getDocumentationProjects() {
|
|
[project(":spring-credhub-docs")] as Set
|
|
}
|
|
|
|
def getTestProjects() {
|
|
[project(":spring-credhub-integration-tests"),
|
|
project(":spring-credhub-reactive-integration-tests")] as Set
|
|
}
|
|
|
|
def getJavaProjects() {
|
|
subprojects
|
|
}
|
|
|
|
def getLibraryProjects() {
|
|
javaProjects - documentationProjects - testProjects
|
|
}
|
|
|
|
def getPublishedProjects() {
|
|
libraryProjects + rootProject
|
|
}
|