plugins { // Apply the common versioning conventions. id 'org.jdrupes.vmoperator.versioning-conventions' id 'org.ajoberstar.git-publish' } repositories { // Use Maven Central for resolving dependencies. mavenCentral() } var docDestinationDir = file("${rootProject.buildDir}/javadoc") configurations { javadocTaglets } configurations { markdownDoclet javadocTaglets } dependencies { markdownDoclet "org.jdrupes.mdoclet:doclet:3.1.0" javadocTaglets "org.jdrupes.taglets:plantuml-taglet:2.1.0" } task javadocResources(type: Copy) { into file(docDestinationDir) from ("${rootProject.rootDir}/misc") { include '*.woff2' } } task apidocs (type: JavaExec) { // Does not work on JitPack, no /usr/bin/dot enabled = JavaVersion.current() == JavaVersion.VERSION_17 dependsOn javadocResources outputs.dir(docDestinationDir) inputs.file rootProject.file('overview.md') inputs.file "${rootProject.rootDir}/misc/stylesheet.css" jvmArgs = ['--add-exports=jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED', '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED'] main = 'jdk.javadoc.internal.tool.Main' gradle.projectsEvaluated { // Make sure that other projects' compileClasspaths are resolved rootProject.subprojects .findAll({project -> project.name.startsWith("org.jdrupes")}) .each{project -> dependsOn project.tasks.getByName('assemble')} classpath = files(rootProject.subprojects .findAll({project -> project.name.startsWith("org.jdrupes")}) .collect {project -> project.sourceSets.main.compileClasspath}) var sourceDirs = rootProject.subprojects .findAll({project -> project.name.startsWith("org.jdrupes")}) .collect{project -> project.sourceSets.main.allJava.getSrcDirs() } .flatten().findAll(dir -> dir.exists()) sourceDirs.each { inputs.dir(it) } args = ['-doctitle', """VM-Operator (runner.qemu-${-> findProject(':org.jdrupes.vmoperator.runner.qemu').version}, manager-${-> findProject(':org.jdrupes.vmoperator.manager').version})""", '-package', '-use', '-linksource', '-link', 'https://docs.oracle.com/en/java/javase/17/docs/api/', '-link', 'https://mnlipp.github.io/jgrapes/latest-release/javadoc/', '-link', 'https://freemarker.apache.org/docs/api/', '--add-exports', 'jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED', '--add-exports', 'jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED', '-doclet', 'org.jdrupes.mdoclet.MDoclet', '-docletpath', configurations.markdownDoclet.files.asType(List).join(":"), '--disable-auto-highlight', '-tagletpath', configurations.javadocTaglets.files.asType(List).join(":"), '-taglet', 'org.jdrupes.taglets.plantUml.PlantUml', '-taglet', 'org.jdrupes.taglets.plantUml.StartUml', '-taglet', 'org.jdrupes.taglets.plantUml.EndUml', '-overview', "${rootProject.file('overview.md')}", '-d', docDestinationDir, '-sourcepath', sourceDirs.join(':'), '-subpackages', 'org.jdrupes', '-bottom', rootProject.file("misc/javadoc.bottom.txt").text, '--allow-script-in-comments', '-Xdoclint:-html', '--main-stylesheet', "${rootProject.rootDir}/misc/stylesheet.css", '--add-exports=jdk.javadoc/jdk.javadoc.internal.doclets.formats.html=ALL-UNNAMED', '-quiet' ] } ignoreExitValue true } // Prepare github authentication for plugins if (System.properties['org.ajoberstar.grgit.auth.username'] == null) { System.setProperty('org.ajoberstar.grgit.auth.username', project.rootProject.properties['repo.access.token'] ?: "nouser") } gitPublish { repoUri = 'https://github.com/mnlipp/VM-Operator.git' branch = 'gh-pages' contents { from("${rootProject.buildDir}/javadoc") { into 'javadoc' } if (!findProject(':org.jdrupes.vmoperator.runner.qemu').isSnapshot && !findProject(':org.jdrupes.vmoperator.manager').isSnapshot) { from("${rootProject.buildDir}/javadoc") { into 'latest-release/javadoc' } } } preserve { include '**/*' } commitMessage = "Updated." } gradle.projectsEvaluated { tasks.gitPublishReset.mustRunAfter subprojects.tasks .collect { tc -> tc.findByName("build") }.flatten() tasks.gitPublishReset.mustRunAfter subprojects.tasks .collect { tc -> tc.findByName("test") }.flatten() tasks.gitPublishCopy.dependsOn apidocs }