194 lines
4.6 KiB
Groovy
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')
|
|
}
|