Merge pull request #14585 from JB Nizet
* gh-14585: Polish "Add Kotlin DSL examples to Gradle Plugin's documentation" Add Kotlin DSL examples to Gradle Plugin's documentationpull/11125/merge
commit
35bb5abe1d
@ -0,0 +1,3 @@
|
|||||||
|
plugins {
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'https://repo.spring.io/libs-milestone'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolutionStrategy {
|
||||||
|
eachPlugin {
|
||||||
|
if (requested.id.id == 'org.springframework.boot') {
|
||||||
|
useModule "org.springframework.boot:spring-boot-gradle-plugin:${requested.version}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = uri("https://repo.spring.io/libs-milestone")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolutionStrategy {
|
||||||
|
eachPlugin {
|
||||||
|
if (requested.id.id == "org.springframework.boot") {
|
||||||
|
useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'https://repo.spring.io/libs-snapshot'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolutionStrategy {
|
||||||
|
eachPlugin {
|
||||||
|
if (requested.id.id == 'org.springframework.boot') {
|
||||||
|
useModule "org.springframework.boot:spring-boot-gradle-plugin:${requested.version}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
pluginManagement {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = uri("https://repo.spring.io/libs-snapshot")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resolutionStrategy {
|
||||||
|
eachPlugin {
|
||||||
|
if (requested.id.id == "org.springframework.boot") {
|
||||||
|
useModule("org.springframework.boot:spring-boot-gradle-plugin:${requested.version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
// tag::apply[]
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(plugin = "io.spring.dependency-management")
|
||||||
|
// end::apply[]
|
||||||
|
|
||||||
|
task("verify") {
|
||||||
|
doLast {
|
||||||
|
project.plugins.getPlugin(JavaPlugin::class)
|
||||||
|
project.plugins.getPlugin(io.spring.gradle.dependencymanagement.DependencyManagementPlugin::class)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::additional[]
|
||||||
|
springBoot {
|
||||||
|
buildInfo {
|
||||||
|
properties {
|
||||||
|
additional = mapOf(
|
||||||
|
"a" to "alpha",
|
||||||
|
"b" to "bravo"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::additional[]
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::build-info[]
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
||||||
|
// end::build-info[]
|
@ -0,0 +1,17 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::custom-values[]
|
||||||
|
springBoot {
|
||||||
|
buildInfo {
|
||||||
|
properties {
|
||||||
|
artifact = "example-app"
|
||||||
|
version = "1.2.3"
|
||||||
|
group = "com.example"
|
||||||
|
name = "Example application"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::custom-values[]
|
@ -0,0 +1,27 @@
|
|||||||
|
// tag::configure-bom[]
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}" apply false
|
||||||
|
id("io.spring.dependency-management") version "{dependency-management-plugin-version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencyManagement {
|
||||||
|
imports {
|
||||||
|
mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::configure-bom[]
|
||||||
|
|
||||||
|
dependencyManagement {
|
||||||
|
resolutionStrategy {
|
||||||
|
eachDependency {
|
||||||
|
if (requested.group == "org.springframework.boot") {
|
||||||
|
useVersion("{version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::configure-bom[]
|
||||||
|
apply(plugin = "io.spring.dependency-management")
|
||||||
|
|
||||||
|
the<DependencyManagementExtension>().apply {
|
||||||
|
imports {
|
||||||
|
mavenBom(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::configure-bom[]
|
||||||
|
|
||||||
|
the<DependencyManagementExtension>().apply {
|
||||||
|
resolutionStrategy {
|
||||||
|
eachDependency {
|
||||||
|
if (requested.group == "org.springframework.boot") {
|
||||||
|
useVersion("{version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(plugin = "io.spring.dependency-management")
|
||||||
|
|
||||||
|
the<DependencyManagementExtension>().apply {
|
||||||
|
resolutionStrategy {
|
||||||
|
eachDependency {
|
||||||
|
if (requested.group == "org.springframework.boot") {
|
||||||
|
useVersion("{version}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::custom-version[]
|
||||||
|
extra["slf4j.version"] = "1.7.20"
|
||||||
|
// end::custom-version[]
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
|
||||||
|
task("slf4jVersion") {
|
||||||
|
doLast {
|
||||||
|
println(project.the<DependencyManagementExtension>().managedVersions["org.slf4j:slf4j-api"])
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
plugins {
|
||||||
|
id("org.springframework.boot") version "{version}" apply false
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(plugin = "io.spring.dependency-management")
|
||||||
|
|
||||||
|
// tag::dependencies[]
|
||||||
|
dependencies {
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||||
|
}
|
||||||
|
// end::dependencies[]
|
@ -0,0 +1,11 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
application
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
application {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
@ -0,0 +1,22 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::enable-jar[]
|
||||||
|
tasks.getByName<Jar>("jar") {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
// end::enable-jar[]
|
||||||
|
|
||||||
|
// tag::classifier[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
classifier = "boot"
|
||||||
|
}
|
||||||
|
// end::classifier[]
|
||||||
|
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.Application"
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::custom-launch-script[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
launchScript {
|
||||||
|
script = file("src/custom.script")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::custom-launch-script[]
|
@ -0,0 +1,16 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::include-launch-script[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
launchScript()
|
||||||
|
}
|
||||||
|
// end::include-launch-script[]
|
@ -0,0 +1,18 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::launch-script-properties[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
launchScript {
|
||||||
|
properties(mapOf("logFilename" to "example-app.log"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::launch-script-properties[]
|
@ -0,0 +1,12 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
@ -0,0 +1,14 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
manifest {
|
||||||
|
attributes("Start-Class" to "com.example.ExampleApplication")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
@ -0,0 +1,24 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootJar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
runtimeOnly("org.jruby:jruby-complete:1.7.25")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::requires-unpack[]
|
||||||
|
tasks.getByName<BootJar>("bootJar") {
|
||||||
|
requiresUnpack("**/jruby-complete-*.jar")
|
||||||
|
}
|
||||||
|
// end::requires-unpack[]
|
@ -0,0 +1,17 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootWar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
war
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootWar>("bootWar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
classpath(file("spring-boot-devtools-1.2.3.RELEASE.jar"))
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::include-devtools[]
|
||||||
|
tasks.getByName<BootWar>("bootWar") {
|
||||||
|
isExcludeDevtools = false
|
||||||
|
}
|
||||||
|
// end::include-devtools[]
|
@ -0,0 +1,18 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.bundling.BootWar
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
war
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.getByName<BootWar>("bootWar") {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::properties-launcher[]
|
||||||
|
tasks.getByName<BootWar>("bootWar") {
|
||||||
|
manifest {
|
||||||
|
attributes("Main-Class" to "org.springframework.boot.loader.PropertiesLauncher")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::properties-launcher[]
|
@ -0,0 +1,10 @@
|
|||||||
|
plugins {
|
||||||
|
war
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
springBoot {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
@ -0,0 +1,13 @@
|
|||||||
|
plugins {
|
||||||
|
war
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
apply(plugin = "io.spring.dependency-management")
|
||||||
|
|
||||||
|
// tag::dependencies[]
|
||||||
|
dependencies {
|
||||||
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
|
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
|
||||||
|
}
|
||||||
|
// end::dependencies[]
|
@ -0,0 +1,27 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
`maven-publish`
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::publishing[]
|
||||||
|
publishing {
|
||||||
|
publications {
|
||||||
|
create<MavenPublication>("bootJava") {
|
||||||
|
artifact(tasks.getByName("bootJar"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = uri("https://repo.example.com")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::publishing[]
|
||||||
|
|
||||||
|
task("publishingConfiguration") {
|
||||||
|
doLast {
|
||||||
|
println(publishing.publications["bootJava"])
|
||||||
|
println(publishing.repositories.getByName<MavenArtifactRepository>("maven").url)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
plugins {
|
||||||
|
java
|
||||||
|
maven
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::upload[]
|
||||||
|
tasks.getByName<Upload>("uploadBootArchives") {
|
||||||
|
repositories.withGroovyBuilder {
|
||||||
|
"mavenDeployer" {
|
||||||
|
"repository"("url" to "https://repo.example.com")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// end::upload[]
|
||||||
|
|
||||||
|
val url = tasks.getByName<Upload>("uploadBootArchives")
|
||||||
|
.repositories
|
||||||
|
.withGroovyBuilder { getProperty("mavenDeployer") }
|
||||||
|
.withGroovyBuilder { getProperty("repository") }
|
||||||
|
.withGroovyBuilder { getProperty("url") }
|
||||||
|
task("deployerRepository") {
|
||||||
|
doLast {
|
||||||
|
println(url)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.run.BootRun
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
application
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
application {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
||||||
|
|
||||||
|
task("configuredMainClass") {
|
||||||
|
doLast {
|
||||||
|
println(tasks.getByName<BootRun>("bootRun").main)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.run.BootRun
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main[]
|
||||||
|
tasks.getByName<BootRun>("bootRun") {
|
||||||
|
main = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main[]
|
||||||
|
|
||||||
|
task("configuredMainClass") {
|
||||||
|
doLast {
|
||||||
|
println(tasks.getByName<BootRun>("bootRun").main)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.run.BootRun
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::source-resources[]
|
||||||
|
tasks.getByName<BootRun>("bootRun") {
|
||||||
|
sourceResources(sourceSets["main"])
|
||||||
|
}
|
||||||
|
// end::source-resources[]
|
||||||
|
|
||||||
|
task("configuredClasspath") {
|
||||||
|
doLast {
|
||||||
|
println(tasks.getByName<BootRun>("bootRun").classpath.files)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
import org.springframework.boot.gradle.tasks.run.BootRun
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
java
|
||||||
|
application
|
||||||
|
id("org.springframework.boot") version "{version}"
|
||||||
|
}
|
||||||
|
|
||||||
|
// tag::main-class[]
|
||||||
|
springBoot {
|
||||||
|
mainClassName = "com.example.ExampleApplication"
|
||||||
|
}
|
||||||
|
// end::main-class[]
|
||||||
|
|
||||||
|
task("configuredMainClass") {
|
||||||
|
doLast {
|
||||||
|
println(tasks.getByName<BootRun>("bootRun").main)
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,86 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2018 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
|
||||||
|
*
|
||||||
|
* http://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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.junit;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.gradle.api.Rule;
|
||||||
|
import org.junit.runner.Runner;
|
||||||
|
import org.junit.runners.BlockJUnit4ClassRunner;
|
||||||
|
import org.junit.runners.Suite;
|
||||||
|
import org.junit.runners.model.FrameworkMethod;
|
||||||
|
import org.junit.runners.model.InitializationError;
|
||||||
|
|
||||||
|
import org.springframework.boot.gradle.testkit.Dsl;
|
||||||
|
import org.springframework.boot.gradle.testkit.GradleBuild;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Custom {@link Suite} that runs tests against the Groovy and the Kotlin DSLs. Test
|
||||||
|
* classes using the suite must have a public {@link GradleBuild} field named
|
||||||
|
* {@code gradleBuild} and annotated with {@link Rule}.
|
||||||
|
*
|
||||||
|
* @author Jean-Baptiste Nizet
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
public final class GradleMultiDslSuite extends Suite {
|
||||||
|
|
||||||
|
public GradleMultiDslSuite(Class<?> clazz) throws InitializationError {
|
||||||
|
super(clazz, createRunners(clazz));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Runner> createRunners(Class<?> clazz) throws InitializationError {
|
||||||
|
List<Runner> runners = new ArrayList<>();
|
||||||
|
runners.add(new GradleDslClassRunner(clazz, new GradleBuild(Dsl.GROOVY)));
|
||||||
|
runners.add(new GradleDslClassRunner(clazz, new GradleBuild(Dsl.KOTLIN)));
|
||||||
|
return runners;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class GradleDslClassRunner extends BlockJUnit4ClassRunner {
|
||||||
|
|
||||||
|
private final GradleBuild gradleBuild;
|
||||||
|
|
||||||
|
private GradleDslClassRunner(Class<?> klass, GradleBuild gradleBuild)
|
||||||
|
throws InitializationError {
|
||||||
|
super(klass);
|
||||||
|
this.gradleBuild = gradleBuild;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object createTest() throws Exception {
|
||||||
|
Object test = super.createTest();
|
||||||
|
configureTest(test);
|
||||||
|
return test;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void configureTest(Object test) throws Exception {
|
||||||
|
test.getClass().getField("gradleBuild").set(test, this.gradleBuild);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getName() {
|
||||||
|
return this.gradleBuild.getDsl().getName() + " DSL";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String testName(FrameworkMethod method) {
|
||||||
|
return method.getName() + " [" + getName() + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2018 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
|
||||||
|
*
|
||||||
|
* http://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.
|
||||||
|
*/
|
||||||
|
package org.springframework.boot.gradle.testkit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The DSLs supported by Gradle and demonstrated in the documentation samples
|
||||||
|
*/
|
||||||
|
public enum Dsl {
|
||||||
|
|
||||||
|
GROOVY("Groovy", ".gradle"), KOTLIN("Kotlin", ".gradle.kts");
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
private final String extension;
|
||||||
|
|
||||||
|
Dsl(String name, String extension) {
|
||||||
|
this.name = name;
|
||||||
|
this.extension = extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the user-friendly name of the DSL
|
||||||
|
*/
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the file extension of build scripts (starting with a dot)
|
||||||
|
*/
|
||||||
|
String getExtension() {
|
||||||
|
return this.extension;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue