-
Notifications
You must be signed in to change notification settings - Fork 958
Expand file tree
/
Copy pathcommon.gradle
More file actions
134 lines (115 loc) · 3.69 KB
/
common.gradle
File metadata and controls
134 lines (115 loc) · 3.69 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
134
//
// This file is to be applied to every subproject.
//
apply plugin: 'java'
apply plugin: 'idea'
// group and version are set on all projects (including root) via the allprojects
// block in the root build.gradle. Duplicating them here would drift during releases
// (the release workflow only updates build.gradle).
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"
}
}