Newer
Older
labs / tiddlers / content / reference / Gradle / _Reference_Gradle_build.gradle.md

A complete build.gradle for working with Java projects. You will need to update the applicationMainClass variable on line 6 to point at your application's main class.

plugins {
    id "application";
}

application {
    def applicationMainClass = "package.MainClass";
    mainClass = project.hasProperty("mainClass") ? project.getProperty("mainClass") : applicationMainClass;
}

repositories {
    mavenCentral();
}

run {
    standardInput = System.in;
}

/* convenience tasks for working with a project */

tasks.register("createMissingSourceDirs") {
    group = "Project";
    description = "Create all of the missing source directories for this project.";
    doFirst {
        sourceSets.each { def sourceRoot ->
            sourceRoot.allSource.srcDirTrees.each { def sourceDir ->
                if(!sourceDir.dir.exists()) {
                    println "Creating ${sourceDir}";
                    mkdir sourceDir.dir;
                }
            }
        }
    }
}

tasks.register("deleteEmptySourceDirs") {
    group = "Project";
    description = "Delete empty source directories.";
    doFirst {
        sourceSets.each { def sourceRoot ->
            sourceRoot.allSource.srcDirTrees.each { def sourceDir ->
                if(sourceDir.dir.exists() && sourceDir.dir.isDirectory() && sourceDir.dir.list().length == 0) {
                    println "Removing empty ${sourceDir}";
                    sourceDir.dir.delete();
                }
            }
        }
    }
}

tasks.register("openProjectDir") {
    group = "Project";
    description = "Open the project directory in the system file manager.";
    doFirst {
        println("Opening: " + file(projectDir));
        java.awt.Desktop.getDesktop().open(file(projectDir));
    }
}

tasks.register("openBuildDir") {
    group = "Project";
    description = "Open the project build directory in the system file manager.";
    doFirst {
        println("Opening: " + file(buildDir));
        java.awt.Desktop.getDesktop().open(file(buildDir));
    }
}

tasks.register("createGitIgnore") {
    group = "Project";
    description = "Create the project's .gitignore file.";

    def gitIgnored="""
        .gradle/
        .nb-gradle/
        .settings/
        nbproject/
        build/
        bin/
        dist/
        tmp/
        .classpath
        .project
        *.zip
        *.tgz
        *.tar.gz
        *.class
        *.jar
        .DS_Store
        !gradle-wrapper.jar
        """;

    doLast {
        def file = new File(projectDir, ".gitignore");
        if ( !file.exists() ) {
            println("Creating .gitignore");

            gitIgnored.lines().each { f ->
                if(!f.trim().isBlank()) {
                    file.append(f.trim()+"\n");
                }
            }

        } else {
            println(".gitignore already exists");
        }
    }
}