plugins { id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2" id "com.github.ben-manes.versions" version "0.13.0" } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'application' defaultTasks 'deploy' def packageName = 'net.thauvin.erik.mobibot' def deployDir = 'deploy' def isRelease = 'release' in gradle.startParameter.taskNames def semverJar = 'net.thauvin.erik:semver:1.0.0' def getVersion(isIncrement = false) { def propsFile = 'version.properties' def majorKey = 'version.major' def minorKey = 'version.minor' def patchKey = 'version.patch' def metaKey = 'version.buildmeta' def preKey = 'version.prerelease' if (isIncrement) { ant.propertyfile(file: propsFile) { entry(key: patchKey, type: 'int', default: '-1', operation: '+') } } def p = new Properties() file(propsFile).withInputStream { stream -> p.load(stream) } def metadata = p.getProperty(metaKey, '') def prerelease = p.getProperty(preKey, '') return (p.getProperty(majorKey, '1') + '.' + p.getProperty(minorKey, '0') + '.' + p.getProperty(patchKey, '0') + (prerelease.length() > 0 ? '-' + prerelease : '') + (metadata.length() > 0 ? '+' + metadata : '')) } version = getVersion() mainClassName = packageName + '.Mobibot' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' repositories { mavenLocal() mavenCentral() jcenter() } dependencies { compile 'pircbot:pircbot:1.5.0' compile 'org.apache.logging.log4j:log4j-api:2.8.2' compile 'org.apache.logging.log4j:log4j-core:2.8.2' compile 'commons-cli:commons-cli:1.4' compile 'commons-net:commons-net:3.6' compile 'com.squareup.okhttp3:okhttp:3.8.0' compile 'com.rometools:rome:1.7.3' compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.8.2' compile 'org.json:json:20170516' compile 'org.ostermiller:utils:1.07.00' compile 'org.jsoup:jsoup:1.10.2' compile 'net.objecthunter:exp4j:0.4.8' compile 'org.twitter4j:twitter4j-core:4.0.6' compile 'net.thauvin.erik:pinboard-poster:0.9.1' // https://bitbucket.org/akapribot/owm-japis compile files('lib/owm-japis-2.5.0.5.jar') compileOnly semverJar } annotationProcessor { project.version = getVersion(isRelease) library semverJar processor 'net.thauvin.erik.semver.VersionProcessor' } compileJava { options.compilerArgs << '-proc:none' << '-Xlint:unchecked' << '-Xlint:deprecation' } 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.compile.collect { it.getName() }.join(' ./lib/')) version = null } clean { delete deployDir } run { args '--v' } task wrapper(type: Wrapper) { gradleVersion = gradle.gradleVersion } task copyToDeploy(type: Copy) { from('properties') from jar into deployDir } task copyToDeployLib(type: Copy) { from configurations.compile into deployDir + '/lib' } task deploy(dependsOn: ['build']) { 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', 'clean', 'deploy']) { doLast { group = 'Publishing' description = 'Releases new version.' isRelease = true } }