aboutsummaryrefslogtreecommitdiffstats
path: root/build.gradle
blob: 7cf467180cf544da5fe492f6461fff0fb9b2553a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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
}