-
Notifications
You must be signed in to change notification settings - Fork 829
/
build.gradle
92 lines (78 loc) · 2.45 KB
/
build.gradle
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
plugins {
id "java"
id "maven-publish"
id "com.google.protobuf"
id "de.undercouch.download"
id "ru.vyarus.animalsniffer"
}
description = 'OpenTelemetry Proto'
ext.moduleName = 'io.opentelemetry.proto'
dependencies {
// Protobuf plugin seems to erroneously use the non-classpath configurations for resolving
// dependencies.
implementation enforcedPlatform(boms.grpc)
implementation enforcedPlatform(boms.protobuf)
api libraries.protobuf,
libraries.grpc_api,
libraries.grpc_protobuf,
libraries.grpc_stub
signature libraries.android_signature
}
animalsniffer {
// Don't check sourceSets.jmh and sourceSets.test
sourceSets = [
sourceSets.main
]
}
protobuf {
protoc {
// The artifact spec for the Protobuf Compiler
artifact = "com.google.protobuf:protoc:${protocVersion}"
}
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
}
generateProtoTasks {
all()*.plugins { grpc {} }
}
}
def protoVersion = "0.6.0"
// To generate checksum, download the file and run "shasum -a 256 ~/path/to/vfoo.zip"
def protoChecksum = "a40003d50a565c989283d6b5b93b6189c28378387b715bdd54bf4600bb9c17c1"
def protoArchivePath = "$buildDir/archives/opentelemetry-proto-${protoVersion}.zip"
def downloadProtoArchive = tasks.register("downloadProtoArchive", Download) {
onlyIf { !file(protoArchivePath).exists() }
src "https://github.com/open-telemetry/opentelemetry-proto/archive/v${protoVersion}.zip"
dest protoArchivePath
}
def verifyProtoArchive = tasks.register("verifyProtoArchive", Verify) {
dependsOn(downloadProtoArchive)
src protoArchivePath
algorithm "SHA-256"
checksum protoChecksum
}
def unzipProtoArchive = tasks.register("unzipProtoArchive", Copy) {
dependsOn(verifyProtoArchive)
from zipTree(protoArchivePath)
into "$buildDir/protos"
}
sourceSets {
main {
proto {
srcDir "$buildDir/protos/opentelemetry-proto-${protoVersion}"
}
}
}
afterEvaluate {
tasks.named("generateProto") {
dependsOn(unzipProtoArchive)
}
}
// IntelliJ complains that the generated classes are not found, ask IntelliJ to include the
// generated Java directories as source folders.
idea {
module {
sourceDirs += file("build/generated/source/proto/main/java")
// If you have additional sourceSets and/or codegen plugins, add all of them
}
}