aboutsummaryrefslogtreecommitdiffstats
path: root/build.gradle
diff options
context:
space:
mode:
authorFlorian Schmaus <flo@geekplace.eu>2014-06-08 13:18:46 +0200
committerFlorian Schmaus <flo@geekplace.eu>2014-06-08 13:27:25 +0200
commit3236432c39f1d5a1bbbe362c5cfdb088756fd04f (patch)
tree3e67a0bed7fdd2d7525eca395c7f0dfd44bc64f5 /build.gradle
parent152be6eb1a22da8cebe24ac4ee05b487936c9f2a (diff)
Make minidns Android agnostic
there is really no need for minidns to be Android exclusive. Replacing the Android log API with JUL make minidns available for Android and Java SE.
Diffstat (limited to '')
-rw-r--r--build.gradle154
1 files changed, 123 insertions, 31 deletions
diff --git a/build.gradle b/build.gradle
index ae9c7693..7cf46718 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,34 +1,126 @@
-buildscript {
- repositories {
- mavenCentral()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:0.9.0'
- }
+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'
+ }
}
-apply plugin: 'android-library'
-
-android {
- compileSdkVersion 19
- buildToolsVersion '19.0.3'
-
- // NOTE: We are using the old folder structure to also support Eclipse
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- }
- }
-
- // Do not abort build if lint finds errors
- lintOptions {
- abortOnError false
- }
+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
}