-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgrouping.gradle
81 lines (68 loc) · 2.49 KB
/
grouping.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
def nonOtherModules = new HashSet<String>()
def addDependency = { TaskProvider taskProvider, String dependency ->
taskProvider.configure { Task task -> task.dependsOn(dependency) }
}
def getProjectFullName = { Project pj ->
def fullName = pj.name
def parent = pj.parent
while (parent != null && parent.name != rootProject.name) {
fullName = parent.name + ":" + fullName
parent = parent.parent
}
return fullName
}
def addDependencyByType = { TaskProvider taskProvider, String type, String taskName ->
rootProject.allprojects.forEach {
def fullName = getProjectFullName(it)
if (type == "other" && it.name != rootProject.name && !nonOtherModules.contains(it.name) && it.childProjects.isEmpty()) {
addDependency(taskProvider, ":${fullName}:${taskName}")
} else if (it.name.contains(type)) {
addDependency(taskProvider, ":${fullName}:${taskName}")
nonOtherModules.add(it.name)
}
}
}
def groupModulesByType = { String type ->
def testByType = tasks.register("test-${type}") {
group("verification")
description("Run tests with ${type}")
}
addDependencyByType(testByType, type, "test")
def classesByType = tasks.register("classes-${type}") {
group("build")
description("Build classes for ${type}")
}
addDependencyByType(classesByType, type, "classes")
def testClassesByType = tasks.register("testClasses-${type}") {
group("build")
description("Build testClasses for ${type}")
}
addDependencyByType(testClassesByType, type, "testClasses")
}
groupModulesByType("database")
groupModulesByType("graalvm")
groupModulesByType("server")
groupModulesByType("client")
groupModulesByType("kotlin")
groupModulesByType("other")
def jacocoRootReport = tasks.register("jacocoRootReport", JacocoReport) {
group = 'verification'
executionData project.fileTree(dir: '.', include: '**/build/jacoco/test.exec')
reports {
xml.required.set(true)
xml.destination(file("$buildDir/reports/jacoco/test/jacocoTestReport.xml"))
csv.required.set(false)
html.required.set(false)
}
}
subprojects {
tasks.configureEach { task ->
if (task.name == "jacocoTestReport") {
def report = (JacocoReport) task
jacocoRootReport.configure { root ->
root.additionalClassDirs report.allClassDirs
root.additionalSourceDirs report.allSourceDirs
}
}
}
}