plugins { id 'java' id 'checkstyle' id 'org.springframework.boot' version '4.0.0-RC2' id 'io.spring.dependency-management' version '1.1.7' id 'org.graalvm.buildtools.native' version '0.11.1' id 'org.cyclonedx.bom' version '3.0.0' id 'io.spring.javaformat' version '0.0.47' id "io.spring.nohttp" version "0.0.11" id 'net.ltgt.errorprone' version '4.3.0' } gradle.startParameter.excludedTaskNames += [ "checkFormatAot", "checkFormatAotTest" ] group = 'org.springframework.samples' version = '4.0.0-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(25) } } repositories { mavenCentral() } ext.checkstyleVersion = "11.1.0" ext.springJavaformatCheckstyleVersion = "0.0.47" ext.webjarsLocatorLiteVersion = "1.1.1" ext.webjarsFontawesomeVersion = "4.7.0" ext.webjarsBootstrapVersion = "5.3.8" ext.errorProneVersion = "2.42.0" ext.nullAwayVersion = "0.12.10" dependencies { implementation 'org.springframework.boot:spring-boot-starter-cache' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-webmvc' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'javax.cache:cache-api' implementation 'jakarta.xml.bind:jakarta.xml.bind-api' runtimeOnly 'org.springframework.boot:spring-boot-starter-actuator' runtimeOnly "org.webjars:webjars-locator-lite:${webjarsLocatorLiteVersion}" runtimeOnly "org.webjars.npm:bootstrap:${webjarsBootstrapVersion}" runtimeOnly "org.webjars.npm:font-awesome:${webjarsFontawesomeVersion}" runtimeOnly 'com.github.ben-manes.caffeine:caffeine' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'org.postgresql:postgresql' developmentOnly 'org.springframework.boot:spring-boot-devtools' testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test' testImplementation 'org.springframework.boot:spring-boot-starter-restclient-test' testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test' testImplementation 'org.springframework.boot:spring-boot-testcontainers' testImplementation 'org.springframework.boot:spring-boot-docker-compose' testImplementation 'org.testcontainers:testcontainers-junit-jupiter' testImplementation 'org.testcontainers:testcontainers-mysql' checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:${springJavaformatCheckstyleVersion}" checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}" errorprone "com.google.errorprone:error_prone_core:${errorProneVersion}" errorprone "com.uber.nullaway:nullaway:${nullAwayVersion}" } tasks.named('test') { useJUnitPlatform() } checkstyle { configDirectory = project.file('src/checkstyle') configFile = file('src/checkstyle/nohttp-checkstyle.xml') } checkstyleNohttp { configDirectory = project.file('src/checkstyle') configFile = file('src/checkstyle/nohttp-checkstyle.xml') } tasks.withType(JavaCompile).configureEach { options.release = 17 options.errorprone { disableAllChecks = true } if (name.equals("compileJava")) { options.errorprone { error("NullAway") option("NullAway:OnlyNullMarked", "true") option("NullAway:CustomContractAnnotations", "org.springframework.lang.Contract") option("NullAway:JSpecifyMode", "true") } } } tasks.named("formatMain").configure { dependsOn("checkstyleMain") } tasks.named("formatMain").configure { dependsOn("checkstyleNohttp") } tasks.named("formatTest").configure { dependsOn("checkstyleTest") } tasks.named("formatTest").configure { dependsOn("checkstyleNohttp") } checkstyleAot.enabled = false checkstyleAotTest.enabled = false checkFormatAot.enabled = false checkFormatAotTest.enabled = false formatAot.enabled = false formatAotTest.enabled = false