Overview

Overview

The Site plugin is a Gradle plugin for publishing static HTML websites. It is available for use under the Apache License, Version 2.0. If you have any issues, please check the issue tracker, and if there isn't anything relevant, submit a new issue.

Build Status

Distribution

The plugin is distributed via Bintray. If desired, you can use the Bintray plugin to simplify the configuration of Bintray repositories within Gradle build scripts.

Usage

To use the plugin, configure your build.gradle based the example below. See the CHANGES file for a listing of versions.

buildscript {
    repositories {
        maven {
            name = 'BintrayJCenter'
            url = 'http://jcenter.bintray.com'
        }
    }
    dependencies {
        classpath 'us.carrclan.david.gradle:gradle-site-plugin:VERSION'
    }
}
apply plugin: 'site'

Source sets

The Site plugin adds a site source set. This source set works in the same manner as with other plugins, though our interest is primarily in the resources.

Tasks

The Site plugin adds a couple tasks to your project, as shown below.

Task name Depends on Type Description
processSiteResources - Copy Copies site resources into the site resources output directory.
buildSite processSiteResources Task Builds the site.
publishSite buildSite PublishSite Uploads the site resources output.

Project Layout

The Site plugin assumes the project layout shown below.

Directory Meaning
src/site/resources Site resources

Changing the project layout

You can configure the project layout by configuring the source set. Below is a brief example that changes the site resources directory to be a direct child of the project root.

build.gradle

sourceSets {
    site {
        resources {
            srcDir 'website'
        }
    }
}

Extension Properties

The Site plugin adds a site extension to the project. You can use its properties to customize the behavior of the plugin's tasks.

Property name Type Default value Description
sourceSet SourceSet sourceSets.site The source set to use for site tasks.
url String None The URL to which the site should be published.
authenticationInfo AuthenticationInfo None The authentication information with to use when publishing the site.

Configuration Example

build.gradle

site {
    url = 'sftp://ftp.example.com/joe'
    authenticationInfo {
        userName = 'joe'
        password = 'secretPassword'
    }
}

ProcessSiteResources

The Site plugin uses the Copy task for resource handling. See the Gradle User Guide for more information.

Task Property Type Default Value
srcDirs Object site.sourceSet.resources
destinationDir File site.sourceSet.output.resourceDir

PublishSite

The Site plugin uses Maven Wagon to provide site publishing capability over a number of different protocols. Currently, only the SFTP provider has been tested, though others (HTTP, FTP, SCP, WebDAV, file) may work as well.

Task Property Type Default Value
baseDir File site.sourceSet.output.resourceDir
url String site.url
authenticationInfo AuthenticationInfo site.authenticationInfo

Plugins with support for the Site plugin