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 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 'log4j:log4j:1.2.17@jar' compile 'pircbot:pircbot:1.5.0' compile 'commons-codec:commons-codec:1.10' compile 'commons-logging:commons-logging:1.2' compile 'commons-net:commons-net:3.6' compile 'commons-cli:commons-cli:1.4' compile 'commons-httpclient:commons-httpclient:3.1' compile 'oro:oro:2.0.8' compile 'org.jsoup:jsoup:1.10.2' compile 'com.rometools:rome:1.7.1' compile 'org.slf4j:slf4j-log4j12:1.7.25' compile 'org.json:json:20160810' compile 'org.ostermiller:utils:1.07.00' compile 'net.sourceforge.jweather:jweather:0.3.0@jar' compile 'net.objecthunter:exp4j:0.4.8' compile 'org.twitter4j:twitter4j-core:4.0.6' compile 'net.sf.delicious-java:delicious:1.14' compile files('lib/owm-japis-2.5.0.5.jar') compileOnly 'net.thauvin.erik:semver:0.9.6-beta' } annotationProcessor { project.version = getVersion(isRelease) library 'net.thauvin.erik:semver:0.9.6-beta' 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') { include '*.properties' } from jar into deployDir } task copyToDeployLib(type: Copy) { from configurations.runtime 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 } }