Skip to content

Gradle plugins with typical configuration for Java based project

License

Notifications You must be signed in to change notification settings

coditory/gradle-build-plugin

Folders and files

NameName
Last commit message
Last commit date
Jul 3, 2023
Jan 18, 2023
Jan 18, 2023
Jan 18, 2023
Nov 10, 2020
Mar 25, 2020
Nov 10, 2020
Jan 18, 2023
Nov 18, 2024
Apr 10, 2022
Nov 10, 2020
Jan 18, 2023

Repository files navigation

Build Gradle Plugin

Build Coverage Status Gradle Plugin Portal

This plugin applies a typical configuration for Coditory JVM projects:

Enabling the plugin

Add to your build.gradle:

plugins {
  id 'com.coditory.build' version '0.1.20'
}

Add reasonable defaults

Adds maven central as the default repository:

// add a default repository
repositories {
    mavenCentral()
}

// enable junit and produce logs for tests
tasks.withType(Test) {
    useJUnitPlatform()
    testLogging {
        exceptionFormat = "full"
        events = ["passed", "skipped", "failed"]
    }
}

tasks.withType(JavaCompile) {
    // make all test/main builds use UTF-8
    options.encoding = "UTF-8"
    // produce error on lint problems
    options.compilerArgs << "-Werror"
    options.compilerArgs << "-Xlint"
    options.compilerArgs << "-Xlint:-serial"
}

tasks.withType(GroovyCompile) {
    // make all test/main builds use UTF-8
    groovyOptions.encoding = "UTF-8"
}

tasks.withType(KotlinCompile) {
    // produce errors on warnings
    kotlinOptions.allWarningsAsErrors = true
}

// the most recent ktlint version (that does not cause problems)
// https://github.com/JLLeitschuh/ktlint-gradle/issues/589
ktlint {
    version.set("0.45.2")
}

// make Jacoco report combine all types of tests
jacocoTestReport {
    executionData(fileTree(project.buildDir).include("jacoco/*.exec"))
    reports {
        xml.required = true
        html.required = true
    }
}

// make javadoc less strict to limit noisy logs
javadoc {
    source = sourceSets.main.allJava
    classpath = configurations.compileClasspath
    failOnError = false
    options {
        this as StandardJavadocDocletOptions
        addBooleanOption("Xdoclint:none", true)
        addStringOption("Xmaxwarns", "1")
        memberLevel = JavadocMemberLevel.PUBLIC
        outputLevel = JavadocOutputLevel.QUIET
        encoding = "UTF-8"
    }
}

You're responsible to setup jvm toolchains:

// build.gradle for java:
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

// build.gradle.kts for kotlin >=1.8:
kotlin {
    jvmToolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

// build.gradle.kts of for kotlin <1.8
kotlin {
    jvmToolchain {
        (this as JavaToolchainSpec).languageVersion.set(JavaLanguageVersion.of(11))
    }
}