-
Notifications
You must be signed in to change notification settings - Fork 962
Expand file tree
/
Copy pathcommon.gradle
More file actions
133 lines (114 loc) · 3.54 KB
/
common.gradle
File metadata and controls
133 lines (114 loc) · 3.54 KB
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
//
// This file is to be applied to every subproject.
//
apply plugin: 'java'
apply plugin: 'idea'
project.group = 'org.openjdk.btrace'
project.version = '3.0.0-SNAPSHOT'
buildscript {
repositories {
mavenCentral()
}
}
ext.getToolsJar = {
// Prefer a JDK 8 tools.jar, which contains com.sun.tools.attach, com.sun.source.*, and sun.jvmstat.*
try {
def jdk8 = javaToolchains.compilerFor { languageVersion.set(JavaLanguageVersion.of(8)) }.get()
def tj = jdk8.metadata.installationPath.file("lib/tools.jar")
return tj
} catch (Throwable ignore) {
// Fallback to empty file reference to avoid NPEs; callers should check existence
return file('non-existent-tools.jar')
}
}
ext.getJavac = { int version = 11 ->
return javaToolchains.compilerFor {
languageVersion.set(JavaLanguageVersion.of(version))
}.get().metadata.installationPath.file("bin/javac")
}
ext.getJavadoc = {
return javaToolchains.compilerFor {
languageVersion.set(JavaLanguageVersion.of(8))
}.get().metadata.installationPath.file("bin/javadoc")
}
ext.getGitCommit = {
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', 'HEAD'
standardOutput = stdout
ignoreExitValue = true
}
def commit = stdout.toString().trim()
return commit ?: 'dev'
} catch (Exception e) {
return 'dev'
}
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
compileJava {
sourceCompatibility = 8
targetCompatibility = 8
javaCompiler = javaToolchains.compilerFor {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
// Read more about repositories here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
}
dependencies {
// Adding dependencies here will add the dependencies to each subproject.
testImplementation libs.junit.jupiter
}
String mavenArtifactId = name
javadoc {
options.addStringOption('Xdoclint:all,-missing', '-quiet')
options.encoding("UTF-8")
executable = "${getJavadoc()}"
failOnError true
// Ensure Javadoc can resolve com.sun.* APIs (tools.jar on JDK8)
doFirst {
def toolsJar = getToolsJar()
try {
File tj = (toolsJar instanceof File) ? toolsJar : toolsJar?.asFile
if (tj != null && tj.exists()) {
classpath += files(tj)
}
} catch (Throwable ignore) {
// Ignore if toolchain lacks tools.jar (JDK9+); compile still uses modules
}
}
}
task sourcesJar(type: Jar, dependsOn: classes, description: 'Creates a jar from the source files.') {
archiveClassifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
archiveClassifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives jar
archives sourcesJar
archives javadocJar
}
task createFolders(description: 'Creates the source folders if they do not exist.') doLast {
sourceSets*.allSource*.srcDirs*.each { File srcDir ->
if (!srcDir.isDirectory()) {
println "Creating source folder: ${srcDir}"
srcDir.mkdirs()
}
}
}
test {
useJUnitPlatform()
// Always run tests, even when nothing changed.
dependsOn 'cleanTest'
// Show test results.
testLogging {
events "passed", "skipped", "failed"
}
}