-
Notifications
You must be signed in to change notification settings - Fork 173
/
build.gradle.kts
168 lines (137 loc) · 5.5 KB
/
build.gradle.kts
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
/*
Copyright (C) 2015 - 2019 Electronic Arts Inc. All rights reserved.
This file is part of the Orbit Project <https://www.orbit.cloud>.
See license in LICENSE.
*/
import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
// Shared dependencies
val grpcVersion by extra("1.26.0")
val grpcKotlinVersion by extra("0.1.4")
val protobufVersion by extra("3.11.1")
val kotlinCoroutinesVersion by extra("1.3.3")
val slf4jVersion by extra("1.7.30")
val jacksonVersion by extra("2.10.2")
// Publishing info
val orbitGroup by extra("cloud.orbit")
val orbitVersion by extra(project.properties["orbit.version"]!!)
val orbitUrl by extra("https://www.orbit.cloud")
val orbitScmUrl by extra("https://github.com/orbit/orbit.git")
val orbitDescription by extra("Orbit is a system to make building highly scalable realtime services easier.")
val orgName by extra("Electronic Arts")
val orgUrl by extra("https://www.ea.com")
val orgEmail by extra("orbit@ea.com")
val licenseName by extra("The BSD 3-Clause License")
val licenseUrl by extra("http://opensource.org/licenses/BSD-3-Clause")
plugins {
val kotlinVersion = "1.3.61"
base
kotlin("jvm") version kotlinVersion apply false
id("org.jetbrains.dokka") version "0.10.0" apply false
}
allprojects {
group = orbitGroup
version = orbitVersion
description = orbitDescription
repositories {
mavenCentral()
jcenter()
}
}
subprojects {
plugins.withType<KotlinPluginWrapper> {
dependencies {
"implementation"(kotlin("stdlib-jdk8"))
"implementation"("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutinesVersion")
"implementation"("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:$kotlinCoroutinesVersion")
"testRuntimeOnly"("org.slf4j:slf4j-simple:$slf4jVersion")
"testImplementation"(kotlin("test-junit"))
}
tasks.withType<KotlinJvmCompile> {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
plugins.withType<MavenPublishPlugin> {
plugins.apply("org.jetbrains.dokka")
tasks.creating(DokkaTask::class) {
outputFormat = "html"
outputDirectory = "$buildDir/javadoc"
}
val dokkaJar by tasks.creating(Jar::class) {
group = JavaBasePlugin.DOCUMENTATION_GROUP
description = "Assembles Kotlin docs with Dokka"
archiveClassifier.set("javadoc")
from(tasks.withType<DokkaTask>())
}
val sourcesJar by tasks.creating(Jar::class) {
dependsOn(JavaPlugin.CLASSES_TASK_NAME)
archiveClassifier.set("sources")
val sourceSets: SourceSetContainer by project
from(sourceSets["main"].allSource)
}
extensions.configure<PublishingExtension> {
plugins.apply("signing")
publications {
create<MavenPublication>("default") {
from(components["java"])
artifact(dokkaJar)
artifact(sourcesJar)
pom {
name.set(project.name)
description.set(project.description)
url.set(orbitUrl)
licenses {
license {
name.set(licenseName)
url.set(licenseUrl)
}
}
scm {
url.set(orbitUrl)
connection.set(orbitScmUrl)
developerConnection.set(orbitScmUrl)
}
organization {
name.set(orgName)
url.set(orgUrl)
}
developers {
developer {
name.set(orgName)
email.set(orgEmail)
}
}
}
}
}
repositories {
maven {
val remotePublish = project.properties["remotePublish"]?.toString() == "true"
var publicationUrl = "$buildDir/repository"
if (remotePublish) {
publicationUrl = project.properties["publish.url"]?.toString() ?: publicationUrl
val publicationUsername = project.properties["publish.username"]?.toString()
val publicationPassword = project.properties["publish.password"]?.toString()
credentials {
username = publicationUsername
password = publicationPassword
}
}
url = uri(publicationUrl)
}
}
extensions.configure<SigningExtension> {
val inMemoryKey = project.properties["inMemoryKey"]?.toString() == "true"
if (inMemoryKey) {
val signingKey = findProperty("signingKey")?.toString()
val signingPassword = findProperty("signingPassword")?.toString()
useInMemoryPgpKeys(signingKey, signingPassword)
}
sign(publications["default"])
}
}
}
}