apply plugin: 'io.spring.convention.docs' apply plugin: 'io.spring.convention.spring-test' dependencies { testImplementation project(':spring-session-core') testImplementation project(':spring-session-data-redis') testImplementation project(':spring-session-hazelcast') testImplementation project(':spring-session-jdbc') testImplementation 'org.springframework:spring-jdbc' testImplementation 'org.springframework:spring-messaging' testImplementation 'org.springframework:spring-webmvc' testImplementation 'org.springframework:spring-websocket' testImplementation 'org.springframework.security:spring-security-config' testImplementation 'org.springframework.security:spring-security-web' testImplementation 'org.springframework.security:spring-security-test' testImplementation 'org.mockito:mockito-core' testImplementation 'org.springframework:spring-test' testImplementation 'org.assertj:assertj-core' testImplementation 'com.hazelcast:hazelcast' testImplementation 'io.lettuce:lettuce-core' testImplementation 'javax.servlet:javax.servlet-api' testImplementation 'org.junit.jupiter:junit-jupiter-api' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' } sourceSets { test { java { srcDirs = ['modules/ROOT/examples/java'] } resources { srcDirs = ['modules/ROOT/examples/resources'] } } } tasks.register("generateAntora") { group = "Documentation" description = "Generates antora files" dependsOn 'generateAntoraYml', 'generateAntoraComponentVersion' } tasks.register("generateAntoraYml") { group = "Documentation" description = "Generates the antora.yml for dynamic properties" doLast { def dollar = '$' def ghTag = snapshotBuild ? 'main' : project.version def ghUrl = "https://github.com/spring-projects/spring-session/tree/$ghTag" def versions = resolvedVersions(project.configurations.testRuntimeClasspath) def ymlVersions = "" versions.call().each { name, version -> ymlVersions += """ ${name}: ${version}""" } def outputFile = new File("$buildDir/generateAntora/antora.yml") outputFile.getParentFile().mkdirs() outputFile.createNewFile() outputFile.setText("""name: session title: Spring Session start_page: ROOT:index.adoc asciidoc: attributes: download-url: "https://github.com/spring-projects/spring-session/archive/${ghTag}.zip" gh-samples-url: "$ghUrl/spring-session-samples/" samples-dir: "example${dollar}spring-session-samples/" session-jdbc-main-resources-dir: "example${dollar}session-jdbc-main-resources-dir/" spring-session-data-mongodb-dir: "example${dollar}spring-session-data-mongodb-dir/" docs-test-dir: "example${dollar}java/" websocketdoc-test-dir: 'example${dollar}java/docs/websocket/' docs-test-resources-dir: "example${dollar}resources/" indexdoc-tests: "example${dollar}java/docs/IndexDocTests.java" spring-session-version: ${project.version} version-milestone: $milestoneBuild version-release: $releaseBuild version-snapshot: $snapshotBuild ${ymlVersions} """) } } tasks.register("generateAntoraComponentVersion") { group = "Documentation" description = "Generates the antora.component.version file" doLast { def outputFile = new File("$buildDir/generateAntora/antora.component.version") outputFile.getParentFile().mkdirs() outputFile.createNewFile() def antoraVersion = project.version.replaceAll(/^(\d+\.\d+)\.\d+(-\w+)?$/, '$1') outputFile.setText("$antoraVersion") } } repositories { maven { url "https://repo.spring.io/release" } } def resolvedVersions(Configuration configuration) { return { configuration.resolvedConfiguration .resolvedArtifacts .collectEntries { [(it.name + "-version"): it.moduleVersion.id.version] } } }