plugins { id 'org.jetbrains.kotlin.jvm' version '1.3.61' id 'org.jetbrains.kotlin.plugin.noarg' version '1.3.61' id 'info.solidsoft.pitest' version '1.4.5' } group = 'net.pterodactylus' version = '81' repositories { mavenCentral() maven { url "https://maven.pterodactylus.net/" } } apply plugin: 'java' sourceCompatibility = 1.8 targetCompatibility = 1.8 tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } compileKotlin { kotlinOptions { jvmTarget = "1.8" } } configurations { provided { dependencies.all { dep -> configurations.default.exclude group: dep.group, module: dep.name } } compile.extendsFrom provided } dependencies { provided group: 'org.freenetproject', name: 'fred', version: '0.7.5.1475' provided group: 'org.freenetproject', name: 'freenet-ext', version: '29' provided group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.54' compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8' compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.3.0-RC' compile group: 'net.pterodactylus', name: 'utils', version: '0.13.1' compile group: 'com.google.inject', name: 'guice', version: '4.2.2' compile group: 'com.google.guava', name: 'guava', version: '27.0.1-jre' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.1' compile group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.9.1' compile group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' compile group: 'org.jsoup', name: 'jsoup', version: '1.10.2' compile group: 'io.dropwizard.metrics', name: 'metrics-core', version: '4.1.0' compile group: 'javax.activation', name: 'javax.activation-api', version: '1.2.0' testCompile group: 'org.jetbrains.kotlin', name: 'kotlin-test-junit' testCompile group: 'junit', name: 'junit', version: '4.11' testCompile group: 'org.mockito', name: 'mockito-core', version: '2.28.2' testCompile group: 'org.hamcrest', name: 'hamcrest-all', version: '1.3' } apply from: 'version.gradle' task parallelTest(type: Test) { maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1 useJUnit { excludeCategories 'net.pterodactylus.sone.test.NotParallel' } } task notParallelTest(type: Test) { maxParallelForks = 1 useJUnit { includeCategories 'net.pterodactylus.sone.test.NotParallel' } } test { exclude '**' dependsOn parallelTest, notParallelTest } task fatJar(type: Jar) { archiveName = project.name.toLowerCase() + '-jar-with-dependencies.jar' from { (configurations.runtime - configurations.provided).collect { it.isDirectory() ? it : zipTree(it) } } manifest { attributes('Plugin-Main-Class': 'net.pterodactylus.sone.main.SonePlugin') } with jar } javadoc { options { quiet() showFromPrivate() footer('© 2010–2013 David ‘Bombe’ Roden') links('http://docs.oracle.com/javase/7/docs/api/') } failOnError = false } apply plugin: 'jacoco' jacoco { toolVersion = '0.8.4' } jacocoTestReport.dependsOn test pitest { pitestVersion = '1.4.10' outputFormats = ['HTML', 'XML'] timestampedReports = false timeoutFactor = 3.0 } apply plugin: 'findbugs' findbugs { ignoreFailures = true } apply plugin: 'idea' task countLinesMain(type: Exec) { executable = 'cloc' args = ['--by-file', '--xml', '--report-file=build/reports/cloc/main.xml', 'src/main'] standardOutput = new ByteArrayOutputStream() } task countLinesTest(type: Exec) { executable = 'cloc' args = ['--by-file', '--xml', '--report-file=build/reports/cloc/test.xml', 'src/test'] standardOutput = new ByteArrayOutputStream() } task countLines { new File(buildDir, "reports/cloc").mkdirs() dependsOn tasks.countLinesMain dependsOn tasks.countLinesTest } noArg { annotation('net.pterodactylus.sone.main.NoArg') }