// Add "help" tasks which display plain text files under 'help' folder. configure(rootProject) { def helpFiles = [ ["Workflow", "help/workflow.txt", "Typical workflow commands."], ["Ant", "help/ant.txt", "Ant-gradle migration help."], ["Tests", "help/tests.txt", "Tests, filtering, beasting, etc."], ["Deps", "help/dependencies.txt", "Declaring, inspecting and excluding dependencies."], ["ForbiddenApis", "help/forbiddenApis.txt", "How to add/apply rules for forbidden APIs."], ["LocalSettings", "help/localSettings.txt", "Local settings, overrides and build performance tweaks."], ["Git", "help/git.txt", "Git assistance and guides."], ] helpFiles.each { section, path, sectionInfo -> task "help${section}" { group = 'Help (developer guides and hints)' description = sectionInfo doFirst { println "\n" + rootProject.file(path).getText("UTF-8") } } } help { doLast { println "" println "This is an experimental Lucene/Solr gradle build. See some" println "guidelines, ant-equivalent commands etc. under help/*; or type:" helpFiles.each { section, path, sectionInfo -> println String.format(Locale.ROOT, " gradlew :help%-14s # %s", section, sectionInfo) } } } task allHelpFilesExit() { doFirst { helpFiles.each { section, path, sectionInfo -> if (!rootProject.file(path).exists()) { throw new GradleException("Help file missing: ${path} (correct help.gradle)") } } } } check.dependsOn allHelpFilesExit }