127 lines
3.2 KiB
Groovy
127 lines
3.2 KiB
Groovy
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'
|
|
}
|
|
|
|
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
|
|
}
|