apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'maven' apply plugin: 'osgi' apply plugin: 'signing' ext { shortVersion = '0.1' isSnapshot = true gitCommit = getGitCommit() isReleaseVersion = !shortVersion sonatypeCredentialsAvailable = project.hasProperty('sonatypeUsername') && project.hasProperty('sonatypePassword') signingRequired = isReleaseVersion sonatypeSnapshotUrl = 'https://oss.sonatype.org/content/repositories/snapshots' sonatypeStagingUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2' buildDate = (new java.text.SimpleDateFormat("yyyy-MM-dd")).format(new Date()) } group = 'de.measite.minidns' description = "A minimal DNS client library with support for A, AAAA, NS and SRV records" sourceCompatibility = 1.7 version = shortVersion if (isSnapshot) { version += '-SNAPSHOT' } repositories { mavenLocal() mavenCentral() } jar { manifest { instruction 'Implementation-GitRevision:', project.ext.gitCommit } } gradle.taskGraph.whenReady { taskGraph -> if (signingRequired && taskGraph.allTasks.any { it instanceof Sign }) { // Use Java 6's console to read from the console (no good for a CI environment) Console console = System.console() console.printf '\n\nWe have to sign some things in this build.\n\nPlease enter your signing details.\n\n' def password = console.readPassword('GnuPG Private Key Password: ') allprojects { ext.'signing.password' = password } console.printf '\nThanks.\n\n' } } uploadArchives { repositories { mavenDeployer { if (signingRequired) { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } } repository(url: project.sonatypeStagingUrl) { if (sonatypeCredentialsAvailable) { authentication(userName: sonatypeUsername, password: sonatypePassword) } } snapshotRepository(url: project.sonatypeSnapshotUrl) { if (sonatypeCredentialsAvailable) { authentication(userName: sonatypeUsername, password: sonatypePassword) } } pom.project { name 'minidns' packaging 'jar' inceptionYear '2014' url 'https://github.com/rtreffer/minidns' description project.description issueManagement { system 'GitHub' url 'https://github.com/rtreffer/minidns/issues' } distributionManagement { snapshotRepository { id 'minidns.snapshot' url project.sonatypeSnapshotUrl } } scm { url 'https://github.com/rtreffer/minidns' connection 'scm:git:https://github.com/rtreffer/minidns.git' developerConnection 'scm:git:https://github.com/rtreffer/minidns.git' } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } developers { developer { id 'rtreffer' name 'Rene Treffer' } developer { id 'flow' name 'Florian Schmaus' email 'flow@geekplace.eu' } } } } } signing { required { signingRequired } sign configurations.archives } } def getGitCommit() { def dotGit = new File("$projectDir/.git") if (!dotGit.isDirectory()) return 'non-git build' def cmd = 'git describe --all --dirty=+' def proc = cmd.execute() def gitCommit = proc.text.trim() assert !gitCommit.isEmpty() gitCommit }