apply plugin: 'java' apply plugin: 'groovy' sourceCompatibility = 1.7 targetCompatibility = 1.7 apply plugin: "io.franzbecker.gradle-lombok" lombok { // optional: values below are the defaults version = versions.lombok sha256 = "" } apply plugin: "net.ltgt.errorprone" tasks.withType(JavaCompile) { options.compilerArgs += ['-Xep:FutureReturnValueIgnored:OFF'] // workaround for: https://github.com/google/error-prone/issues/780 options.compilerArgs += ['-Xep:ParameterName:OFF'] } apply plugin: "eclipse" eclipse { classpath { downloadSources = true downloadJavadoc = true } } if (configurations.find { it.name == 'jmh' }) { eclipse.classpath.plusConfigurations += [configurations.jmh] } task packageSources(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } artifacts.archives packageSources repositories { mavenLocal() jcenter() mavenCentral() } dependencies { testCompile deps.junit testCompile group: 'org.assertj', name: 'assertj-core', version: '2.9.+' testCompile group: 'org.mockito', name: 'mockito-core', version: '2.7.22' testCompile deps.spock testCompile deps.groovy testCompile deps.testLogging testCompile 'info.solidsoft.spock:spock-global-unroll:0.5.1' testCompile group: 'com.github.stefanbirkner', name: 'system-rules', version: '1.17.1' if (!project.name.contains("netty")) { // avoid screwing up the classpath... testCompile group: 'io.ratpack', name: 'ratpack-groovy-test', version: '1.4.6' } } tasks.withType(Javadoc) { options.encoding = "utf-8" options.docEncoding = "utf-8" options.charSet = "utf-8" options.addStringOption('Xdoclint:none', '-quiet') doFirst { if (project.ext.has("apiLinks")) { options.links(*project.apiLinks) } } } javadoc { source = sourceSets.main.allJava classpath = configurations.compileClasspath options { setMemberLevel JavadocMemberLevel.PUBLIC setAuthor true links "https://docs.oracle.com/javase/8/docs/api/" } } task sourceJar(type: Jar) { from sourceSets.main.allJava classifier = 'sources' } task javaDocJar(type: Jar, dependsOn: javadoc) { from javadoc.destinationDir classifier = 'javadoc' } artifacts { archives sourceJar archives javaDocJar } if (project.plugins.hasPlugin('com.github.johnrengelman.shadow')) { // Remove the no-deps jar from the archives to prevent publication configurations.archives.with { artifacts.remove artifacts.find { it.archiveTask.is jar } } artifacts { archives shadowJar } } if (project.hasProperty("removeJarVersionNumbers") && removeJarVersionNumbers) { tasks.withType(AbstractArchiveTask) { version = null } } project.ext.testJava8Only = [] project.ext.testJava8Minimum = [] tasks.withType(Test) { if (name.endsWith("Java7") || name.endsWith("Java9")) { return } def cloned = it def java7Home = System.getenv("JAVA7_HOME") if (java7Home != null) { def testJ7 = task "${cloned.name}Java7"(type: cloned.class) { description "Runs $cloned.name under java 7" // TODO: Pull from environment variable: executable = "$java7Home/bin/java" afterEvaluate { exclude project.testJava8Only exclude project.testJava8Minimum } } tasks.check.dependsOn testJ7 } def java9Home = System.getenv("JAVA9_HOME") if (java9Home != null) { def testJ9 = task "${cloned.name}Java9"(type: cloned.class) { description "Runs $cloned.name under java 9" // TODO: Pull from environment variable: executable = "$java9Home/bin/java" jvmArgs '--add-opens' jvmArgs 'java.base/jdk.internal.loader=ALL-UNNAMED' project.afterEvaluate { exclude project.testJava8Only } } tasks.check.dependsOn testJ9 } } apply from: "$rootDir/gradle/checkstyle.gradle" apply from: "$rootDir/gradle/codenarc.gradle" apply from: "$rootDir/gradle/jacoco.gradle" plugins.withType(BasePlugin) { project.afterEvaluate { def deleteTasks = tasks.withType(Delete) + project.tasks.findByPath('clean') def otherTasks = tasks - deleteTasks otherTasks*.mustRunAfter deleteTasks } }