mobibot/build.gradle

194 lines
4.6 KiB
Groovy

plugins {
id 'application'
id 'com.github.ben-manes.versions' version '0.39.0'
id 'idea'
id 'io.gitlab.arturbosch.detekt' version '1.17.1'
id 'jacoco'
id 'java'
id 'net.thauvin.erik.gradle.semver' version '1.0.4'
id 'org.jetbrains.kotlin.jvm' version '1.5.20'
id 'org.jetbrains.kotlin.kapt' version '1.5.20'
id 'org.sonarqube' version '3.3'
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"
mainClassName = packageName + '.Mobibot'
ext.versions = [
log4j: '2.14.1',
pmd : '6.35.0',
]
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'
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.16.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'
testImplementation 'org.assertj:assertj-core:3.20.2'
testImplementation 'org.testng:testng:7.4.0'
}
test {
testLogging {
exceptionFormat = 'full'
events('skipped', 'failed')
}
useTestNG() {
options.suites('src/test/resources/testng.xml')
}
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kapt {
arguments {
arg('semver.project.dir', projectDir)
}
}
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 = java.targetCompatibility.toString()
}
}
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")
}
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('-h')
}
incrementBuildMeta {
doFirst {
if (!System.getenv('CI')) {
buildMeta = sprintf("%03d", (buildMeta as Integer) + 1)
} else {
println 'No increment on CIs.'
}
}
}
sonarqube {
properties {
property('sonar.organization', 'ethauvin-github')
property('sonar.projectKey', 'ethauvin_mobibot')
property('sonar.host.url', 'https://sonarcloud.io')
}
}
jacoco {
toolVersion = '0.8.7'
}
jacocoTestReport {
dependsOn test
reports {
html.required = true
xml.required = true
}
}
tasks.sonarqube {
dependsOn 'jacocoTestReport'
}
task copyToDeploy(type: Copy) {
from('properties', jar)
into deployDir
}
task copyToDeployLib(type: Copy) {
from(configurations.runtimeClasspath) {
exclude 'annotations-*.jar'
}
into(deployDir + '/lib')
}
task deploy {
description = "Copies all needed files to the ${deployDir} directory."
group = 'Publishing'
dependsOn(clean, build, jar)
outputs.dir deployDir
inputs.files(copyToDeploy, copyToDeployLib)
doLast {
file(deployDir + '/logs').mkdir()
}
mustRunAfter clean
}
task release {
group = 'Publishing'
description = 'Releases new version.'
dependsOn(wrapper, 'deploy')
}