plugins { id "com.ewerk.gradle.plugins.annotation-processor" version "1.0.2" } apply plugin: 'java' apply plugin: 'idea' apply plugin: 'application' defaultTasks 'run' def isRelease = 'release' in gradle.startParameter.taskNames def deployDir = 'deploy' // Get version from properties file. Increment patch if specified. 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 = 'net.thauvin.erik.semver.example.Example' [compileJava, compileTestJava]*.options*.encoding = 'UTF-8' repositories { mavenLocal() mavenCentral() } dependencies { compileOnly 'net.thauvin.erik:semver:0.9.5-beta' } annotationProcessor { // Update version, increment on release. project.version = getVersion(isRelease) library 'net.thauvin.erik:semver:0.9.5-beta' processor 'net.thauvin.erik.semver.VersionProcessor' // sourcesDir 'src/generated/java' } compileJava { options.compilerArgs << '-proc:none' } jar { manifest.attributes('Main-Class': mainClassName) } clean { delete deployDir } task copyToDeploy(type: Copy) { from jar into deployDir } task deploy(dependsOn: ['build', 'copyToDeploy']) { description = 'Copies all needed files to the ${deployDir} directory.' group = 'Publishing' outputs.dir deployDir inputs.files copyToDeploy mustRunAfter clean } task release(dependsOn: ['deploy', 'wrapper']) << { group = 'Publishing' description = 'Releases new version.' isRelease = true } task wrapper(type: Wrapper) { gradleVersion = gradle.gradleVersion }