plugins { id 'application' id 'checkstyle' id 'com.github.ben-manes.versions' version '0.38.0' id 'com.github.spotbugs' version '4.7.1' id 'idea' id 'io.gitlab.arturbosch.detekt' version '1.17.0-RC1' id 'jacoco' id 'java' id 'net.thauvin.erik.gradle.semver' version '1.0.4' id 'org.jetbrains.kotlin.jvm' version '1.5.0' id 'org.jetbrains.kotlin.kapt' version '1.5.0' id 'org.sonarqube' version '3.2.0' id 'pmd' } defaultTasks 'deploy' final def packageName = 'net.thauvin.erik.mobibot' final def deployDir = 'deploy' final def semverProcessor = "net.thauvin.erik:semver:1.2.0" ext.versions = [ log4j : '2.14.1', pmd : '6.34.0', spotbugs: '4.2.3' ] repositories { mavenLocal() mavenCentral() maven { url 'https://oss.sonatype.org/content/repositories/snapshots' } } dependencies { kapt(semverProcessor) compileOnly(semverProcessor) implementation 'pircbot:pircbot:1.5.0' compileOnly 'pircbot:pircbot:1.5.0:sources' implementation(platform("org.jetbrains.kotlin:kotlin-bom")) implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0-RC' implementation "org.apache.logging.log4j:log4j-api:$versions.log4j" implementation "org.apache.logging.log4j:log4j-core:$versions.log4j" implementation "org.apache.logging.log4j:log4j-slf4j-impl:$versions.log4j" implementation 'commons-cli:commons-cli:1.4' implementation 'commons-net:commons-net:3.8.0' implementation 'org.apache.commons:commons-lang3:3.12.0' implementation 'com.rometools:rome:1.15.0' implementation 'com.squareup.okhttp3:okhttp:4.9.1' implementation 'net.aksingh:owm-japis:2.5.3.0' implementation 'net.objecthunter:exp4j:0.4.8' implementation 'net.thauvin.erik:cryptoprice:0.9.0-SNAPSHOT' implementation 'net.thauvin.erik:pinboard-poster:1.0.3' implementation 'org.json:json:20210307' implementation 'org.jsoup:jsoup:1.13.1' implementation 'org.twitter4j:twitter4j-core:4.0.7' compileOnly "com.github.spotbugs:spotbugs-annotations:$versions.spotbugs" testCompileOnly "com.github.spotbugs:spotbugs-annotations:$versions.spotbugs" testImplementation 'org.assertj:assertj-core:3.19.0' testImplementation 'org.testng:testng:7.4.0' spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.11.0' spotbugsPlugins 'com.mebigfatguy.sb-contrib:sb-contrib:7.4.7' } test { testLogging { exceptionFormat "full" } useTestNG() { options.suites('src/test/resources/testng.xml') } } java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kapt { arguments { arg("semver.project.dir", projectDir) } } application { mainClassName = packageName + '.Mobibot' } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } compileJava { dependsOn('incrementBuildMeta') options.compilerArgs += ['-Xlint:unchecked', '-Xlint:deprecation'] } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { jvmTarget = '11' } } spotbugs { toolVersion.set("$versions.spotbugs") excludeFilter.set(file("$projectDir/config/spotbugs/excludeFilter.xml")) tasks.spotbugsMain { reports.create("html") { enabled = true } } tasks.spotbugsTest { reports.create("html") { enabled = true } } } pmd { toolVersion = versions.pmd ignoreFailures = true ruleSets = [] ruleSetFiles = files("${projectDir}/config/pmd.xml") consoleOutput = true } detekt { toolVersion = "main-SNAPSHOT" baseline = file("${projectDir}/config/detekt/baseline.xml") } javadoc { options.tags = ['created'] options.author = true options.links('http://www.jibble.org/javadocs/pircbot/', 'http://docs.oracle.com/javase/8/docs/api/') } jar { manifest.attributes('Main-Class': mainClassName, 'Class-Path': '. ./lib/' + configurations.runtimeClasspath.collect { it.getName() }.join(' ./lib/')) archiveVersion.set("") } clean { doLast { project.delete(fileTree(deployDir)) } } run { args '-d' } incrementBuildMeta { doFirst { if (!System.getenv('CI')) { buildMeta = sprintf("%03d", (buildMeta as Integer) + 1) } else { println "No increment on CIs." } } } sonarqube { properties { property "sonar.projectKey", "ethauvin_mobibot" } } jacoco { toolVersion = '0.8.7' } jacocoTestReport { dependsOn test reports { html.enabled = true xml.enabled = true } } tasks.withType(Checkstyle) { reports { xml.enabled = false html.enabled = true } } tasks.sonarqube { dependsOn("jacocoTestReport") } task copyToDeploy(type: Copy) { from('properties') from jar into deployDir } task copyToDeployLib(type: Copy) { from(configurations.runtimeClasspath) { exclude 'annotations-*.jar' } into deployDir + '/lib' } task deploy(dependsOn: ['clean', 'build', 'jar']) { description = 'Copies all needed files to the ${deployDir} directory.' group = 'Publishing' outputs.dir deployDir inputs.files copyToDeploy inputs.files copyToDeployLib doLast { file(deployDir + '/logs').mkdir() } mustRunAfter clean } task release(dependsOn: ['wrapper', 'deploy']) { group = 'Publishing' description = 'Releases new version.' }