spring-security-docs.gradle 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. plugins {
  2. id "io.github.rwinch.antora" version "0.0.2"
  3. id "org.springframework.antora.check-version"
  4. }
  5. apply plugin: 'io.spring.convention.docs'
  6. apply plugin: 'java'
  7. node {
  8. version = "16.17.0"
  9. }
  10. antora {
  11. antoraVersion = "3.1.0"
  12. playbookFile = file("local-antora-playbook.yml")
  13. arguments = ["--clean", "--stacktrace"]
  14. }
  15. tasks.antora {
  16. dependsOn "generateAntora"
  17. environment = [
  18. "ALGOLIA_API_KEY" : "82c7ead946afbac3cf98c32446154691",
  19. "ALGOLIA_APP_ID" : "244V8V9FGG",
  20. "ALGOLIA_INDEX_NAME" : "security-docs"
  21. ]
  22. }
  23. tasks.register("generateAntora") {
  24. group = "Documentation"
  25. description = "Generates the antora.yml for dynamic properties"
  26. doLast {
  27. def docsTag = snapshotBuild ? 'current' : project.version
  28. def ghTag = snapshotBuild ? 'main' : project.version
  29. def ghUrl = "https://github.com/spring-projects/spring-security/tree/$ghTag"
  30. def ghOldSamplesUrl = "https://github.com/spring-projects/spring-security/tree/5.4.x/samples"
  31. def ghSamplesUrl = "https://github.com/spring-projects/spring-security-samples/tree/$samplesBranch"
  32. def securityDocsUrl = "https://docs.spring.io/spring-security/site/docs/$docsTag"
  33. def securityApiUrl = "$securityDocsUrl/api/"
  34. def securityReferenceUrl = "$securityDocsUrl/reference/html5/"
  35. def springFrameworkApiUrl = "https://docs.spring.io/spring-framework/docs/$springFrameworkVersion/javadoc-api/"
  36. def springFrameworkReferenceUrl = "https://docs.spring.io/spring-framework/docs/$springFrameworkVersion/reference/html/"
  37. def versions = resolvedVersions(project.configurations.testRuntimeClasspath)
  38. def ymlVersions = ""
  39. versions.call().each { name, version ->
  40. ymlVersions += """
  41. ${name}: ${version}"""
  42. }
  43. def outputFile = new File("$buildDir/generateAntora/antora.yml")
  44. outputFile.getParentFile().mkdirs()
  45. outputFile.createNewFile()
  46. def antoraYmlText = file("antora.yml").getText()
  47. outputFile.setText("""$antoraYmlText
  48. title: Spring Security
  49. start_page: ROOT:index.adoc
  50. nav:
  51. - modules/ROOT/nav.adoc
  52. asciidoc:
  53. attributes:
  54. icondir: icons
  55. gh-old-samples-url: $ghOldSamplesUrl
  56. gh-samples-url: $ghSamplesUrl
  57. gh-url: $ghUrl
  58. security-api-url: $securityApiUrl
  59. security-reference-url: $securityReferenceUrl
  60. spring-framework-api-url: $springFrameworkApiUrl
  61. spring-framework-reference-url: $springFrameworkReferenceUrl
  62. spring-security-version: ${project.version}
  63. ${ymlVersions}
  64. """)
  65. }
  66. }
  67. dependencies {
  68. testImplementation platform(project(":spring-security-dependencies"))
  69. testImplementation "com.unboundid:unboundid-ldapsdk"
  70. testImplementation "org.apache.directory.server:apacheds-core"
  71. testImplementation "org.springframework:spring-core"
  72. }
  73. def resolvedVersions(Configuration configuration) {
  74. return {
  75. configuration.resolvedConfiguration
  76. .resolvedArtifacts
  77. .collectEntries { [(it.name + "-version"): it.moduleVersion.id.version] }
  78. }
  79. }
  80. repositories {
  81. mavenCentral()
  82. maven { url "https://repo.spring.io/release" }
  83. maven { url "https://repo.spring.io/milestone" }
  84. maven { url "https://repo.spring.io/snapshot" }
  85. }