-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Expand file tree
/
Copy pathjunit-platform-console-standalone.gradle.kts
More file actions
105 lines (96 loc) · 3.31 KB
/
Copy pathjunit-platform-console-standalone.gradle.kts
File metadata and controls
105 lines (96 loc) · 3.31 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
import junitbuild.extensions.withArchiveOperations
import junitbuild.java.WriteArtifactsFile
plugins {
id("junitbuild.java-library-conventions")
id("junitbuild.shadow-conventions")
}
description = "JUnit Platform Console Standalone"
dependencies {
shadowed(projects.junitPlatformReporting)
shadowed(projects.junitPlatformConsole)
shadowed(projects.junitPlatformSuiteEngine)
shadowed(projects.junitJupiterEngine)
shadowed(projects.junitJupiterParams)
shadowed(projects.junitVintageEngine)
shadowed(libs.apiguardian) {
because("downstream projects need it to avoid compiler warnings")
}
osgiVerification(libs.openTestReporting.tooling.spi)
}
backwardCompatibilityChecks {
enabled = false // already checked by individual projects
}
tasks {
jar {
manifest {
attributes("Automatic-Module-Name" to "org.junit.platform.console.standalone")
attributes("Main-Class" to "org.junit.platform.console.ConsoleLauncher")
}
}
val shadowedArtifactsFile = register("shadowedArtifactsFile", WriteArtifactsFile::class) {
from(configurations.shadowedClasspath)
outputFile = layout.buildDirectory.file("shadowed-artifacts")
}
val extractThirdPartyLicenses = register("extractThirdPartyLicenses", Sync::class) {
from(withArchiveOperations { ops -> configurations.shadowedClasspath.flatMap { it.elements }.map { it.map(ops::zipTree) } })
into(layout.buildDirectory.dir("thirdPartyLicenses"))
include("LICENSE.txt")
include("LICENSE-junit.txt")
include("META-INF/LICENSE-*")
exclude("META-INF/LICENSE-notice.md")
eachFile {
val fileName = relativePath.lastName
relativePath = RelativePath(true, when (fileName) {
"LICENSE.txt" -> "LICENSE-hamcrest"
"LICENSE-junit.txt" -> "LICENSE-junit4"
else -> fileName
})
}
includeEmptyDirs = false
}
shadowJar {
// https://github.com/junit-team/junit-framework/issues/2557
// exclude compiled module declarations from any source (e.g. /*, /META-INF/versions/N/*)
exclude("**/module-info.class")
// TODO: merge meta data files?
exclude("META-INF/junit-platform-configuration-metadata.json")
// https://github.com/junit-team/junit-framework/issues/761
// prevent duplicates, add 3rd-party licenses explicitly
exclude("**/COPYRIGHT*")
exclude("META-INF/LICENSE*")
exclude("LICENSE*.txt") // JUnit 4 and Hamcrest
from(extractThirdPartyLicenses) {
into("META-INF")
}
from(shadowedArtifactsFile) {
into("META-INF")
}
bundle {
bnd("""
# Customize the imports because this is an aggregate jar
Import-Package: \
${extra["importAPIGuardian"]},\
${extra["importJSpecify"]},\
kotlin.*;resolution:="optional",\
kotlinx.*;resolution:="optional",\
*
# Disable the APIGuardian plugin since everything was already
# processed, again because this is an aggregate jar
-export-apiguardian:
""")
}
duplicatesStrategy = DuplicatesStrategy.INCLUDE
mergeServiceFiles()
failOnDuplicateEntries = true
manifest.apply {
attributes(mapOf(
"Specification-Title" to project.name,
"Implementation-Title" to project.name,
// Generate test engine version information in single shared manifest file.
// Pattern of key and value: `"Engine-Version-{YourTestEngine#getId()}": "47.11"`
"Engine-Version-junit-jupiter" to project.version,
"Engine-Version-junit-vintage" to project.version,
))
}
}
}