void apply()

in buildSrc/src/main/groovy/org/grails/gradle/GrailsWebsitePlugin.groovy [30:192]


    void apply(Project project) {
        project.getPlugins().apply(BasePlugin.class)
        project.extensions.create(EXTENSION_NAME, SiteExtension)
        project.tasks.register(TASK_GEN_PROFILES, ProfilesTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("profiles", siteExtension.profiles)
                task.setProperty("output", siteExtension.output)
            }
            task.setDescription('Generates profiles HTML page - build/temp/profiles.html')
            task.setGroup(GROUP_GRAILS)
        })
        project.tasks.register(TASK_GEN_DOCS, DocumentationTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("modules", siteExtension.modules)
                task.setProperty("releases", siteExtension.releases)
                task.setProperty("output", siteExtension.output)
                task.setProperty("url", siteExtension.url)
            }
            task.setDescription('Generates documentation HTML page - build/temp/documentation.html')
            task.setGroup(GROUP_GRAILS)
        })

        project.tasks.register(TASK_GEN_PLUGINS, PluginsTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("output", siteExtension.output)
                task.setProperty("url", siteExtension.url)
                task.setProperty("document", siteExtension.template)
            }
            task.setGroup(GROUP_GRAILS)
            task.setDescription('Generates an HTML Page listing the Grails plugins')
        })


        project.tasks.register(TASK_GEN_SITEMAP, SitemapTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("output", siteExtension.output)
                task.setProperty("url", siteExtension.url)
            }
            task.setGroup(GROUP_GRAILS)
            task.setDescription('Generates build/dist/sitemap.xml with every page in the site')
        })
        project.tasks.register(TASK_RENDER_BLOG, BlogTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("url", siteExtension.url)
                task.setProperty("title", siteExtension.title)
                task.setProperty("about", siteExtension.description)
                task.setProperty("keywords", siteExtension.keywords)
                task.setProperty("robots", siteExtension.robots)
                task.setProperty("document", siteExtension.template)
                task.setProperty("output", siteExtension.output)
                task.setProperty("posts", siteExtension.posts)
                task.setProperty("assets", siteExtension.assets)
                task.setProperty("releases", siteExtension.releases)
            }
            task.setGroup(GROUP_GRAILS)
            task.description = 'Renders Markdown posts (posts/*.md) into HTML pages (dist/blog/*.html). It generates tag pages. Generates RSS feed. Posts with future dates are not generated.'
        })
        project.tasks.register(TASK_RENDER_MINUTES, MinutesTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("url", siteExtension.url)
                task.setProperty("title", siteExtension.title)
                task.setProperty("about", siteExtension.description)
                task.setProperty("keywords", siteExtension.keywords)
                task.setProperty("robots", siteExtension.robots)
                task.setProperty("document", siteExtension.template)
                task.setProperty("output", siteExtension.output)
                task.setProperty("assets", siteExtension.assets)
                task.setProperty("minutes", siteExtension.minutes)
                task.setProperty("releases", siteExtension.releases)
            }
            task.setGroup(GROUP_GRAILS)
            task.description = 'Renders Markdown minutes (minutes/*.md) into HTML pages (dist/foundation/minutes/*.html). It generates tag pages. Generates RSS feed. Minutes with future dates are not generated.'
        })
        project.tasks.register(TASK_GEN_FAQ, QuestionsTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("questions", siteExtension.questions)
                task.setProperty("output", siteExtension.output)
            }
            task.setDescription("Generates FAQ HTML - build/temp/faq.html ")
            task.setGroup(GROUP_GRAILS)
        })

        project.tasks.register(TASK_GEN_GUIDES, GuidesTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("url", siteExtension.url)
                task.setProperty("title", siteExtension.title)
                task.setProperty("about", siteExtension.description)
                task.setProperty("keywords", siteExtension.keywords)
                task.setProperty("robots", siteExtension.robots)
                task.setProperty("document", siteExtension.template)
                task.setProperty("output", siteExtension.output)
                task.setProperty("releases", siteExtension.releases)
            }
            task.setDescription('Generates guides home, tags and categories HTML pages - build/temp/index.html')
            task.setGroup(GROUP_GRAILS)
        })
        project.tasks.register(TASK_COPY_ASSETS, CopyAssetsTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("output", siteExtension.output)
                task.setProperty("assets", siteExtension.assets)
            }
            task.setDescription('Copies css, js, fonts and images from the assets folder to the dist folder')
            task.setGroup(GROUP_GRAILS)
        })

        project.tasks.register(BUILD_GUIDES, BuildGuidesTask, { task ->
            task.dependsOn(TASK_COPY_ASSETS)
            task.dependsOn(TASK_GEN_GUIDES)
            task.setGroup(GROUP_GRAILS)
            task.finalizedBy(TASK_GEN_SITEMAP)
            task.setDescription('Build guides website - generates guides pages, copies assets and generates a sitemap')
        })
        project.tasks.register(TASK_GEN_SITE, RenderSiteTask, { task ->
            Object extension = project.getExtensions().findByName(EXTENSION_NAME)
            if (extension instanceof SiteExtension) {
                SiteExtension siteExtension = ((SiteExtension) extension)
                task.setProperty("url", siteExtension.url)
                task.setProperty("title", siteExtension.title)
                task.setProperty("about", siteExtension.description)
                task.setProperty("keywords", siteExtension.keywords)
                task.setProperty("robots", siteExtension.robots)
                task.setProperty("document", siteExtension.template)
                task.setProperty("output", siteExtension.output)
                task.setProperty("pages", siteExtension.pages)
                task.setProperty("releases", siteExtension.releases)
            }
            task.setGroup(GROUP_GRAILS)
            task.dependsOn(TASK_COPY_ASSETS)
            task.dependsOn(TASK_GEN_DOCS)
            task.dependsOn(TASK_GEN_PROFILES)
            task.dependsOn(TASK_GEN_FAQ)
            task.finalizedBy(TASK_RENDER_BLOG)
            task.finalizedBy(TASK_GEN_PLUGINS)
            task.finalizedBy(TASK_RENDER_MINUTES)
            task.finalizedBy(TASK_GEN_SITEMAP)
            task.setDescription('Build Micronaut website - generates pages with HTML entries in pages and build/temp, renders blog and RSS feed, copies assets and generates a sitemap')

        })
        project.tasks.named(TASK_BUILD).configure(new Action<Task>() {
            @Override
            void execute(Task task) {
                task.dependsOn(TASK_GEN_SITE)
            }
        })
    }