Home

Awesome

gradle-replacer

Build Status Maven Central Coverage Status License

Gradle plugin that provides a minimalistic template engine feature.

TL;DR

You can maintain any configuration files with "properties" format.
The plugin copies files from templates and replaces tags with properties for each configurations.

src/main/templates/config.xml
src/dev/build.properties
src/production/build.properties
ā†“
build/outputs/dev/config.xml
build/outputs/production/config.xml

Example

Build script

build.gradle

buildscript {
    repositories {
        maven {
            url uri('https://oss.sonatype.org/content/repositories/snapshots/')
        }
    }
    dependencies {
        classpath 'com.github.ksoichiro:gradle-replacer:0.1.0-SNAPSHOT'
    }
}

apply plugin: 'com.github.ksoichiro.replacer'

replacer {
    configurations {
        dev
        production
    }
}

Inputs

src/main/templates/config.xml

<server>
    <url>@SERVER_URL@</url>
    <port>@SERVER_PORT@</port>
</server>

src/main/build.properties

SERVER_URL=ssl://192.168.100.56
SERVER_PORT=9900

src/production/build.properties

SERVER_URL=ssl://example.com
SERVER_PORT=9901

Execution

$ ./gradlew replacerGenerate

Outputs

build/outputs/dev/config.xml

<server>
    <url>ssl://192.168.100.56</url>
    <port>9900</port>
</server>

build/outputs/production/config.xml

<server>
    <url>ssl://example.com</url>
    <port>9901</port>
</server>

Usage

Tasks

Clean

Deletes build/outputs and build/archives directory.

$ ./gradlew replacerClean

Generate (Copy and replace)

Copies source files and replace tags.

$ ./gradlew replacerGenerate

Archive

Archives the generated sources.
This depends on replacerGenerate task.

$ ./gradlew replacerArchive

Configurations

replacer {
    // Definition of the targets:
    // e.g. develop, staging, production
    // You need to define them at least one.
    configurations {
        // These are treated as closures.
        // You can omit {}.
        dev {
        }
        production
    }

    // Source directory
    srcDir = "src"

    // Base source directory under srcDir
    srcMainDir = "main"

    // Template files directory under srcMainDir
    // or srcDir/<configuration name>/
    templateDir = "templates"

    // Generated files directory under build
    outputDir = "outputs"

    // Archived files directory under build
    archiveDir = "archives"

    // Properties file directory under templateDir
    properties = "build.properties"

    // DateFormat used for directory name under archiveDir
    archiveIdFormat = "yyyyMMddHHmmss"

    // Archive types for "replacerArchive" task.
    // Available type: zip, gzip, bzip2
    archiveType = "zip"

    // Files to be excluded
    excludes = [ ".gitkeep", ".swp" ]
}

Why?

License

Copyright (c) 2015 Soichiro Kashima
Licensed under MIT license.
See the bundled LICENSE file for details.