-
Notifications
You must be signed in to change notification settings - Fork 8
/
build.gradle.kts
118 lines (103 loc) · 3.6 KB
/
build.gradle.kts
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
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
import java.io.PrintWriter
plugins {
kotlin("jvm") version "2.0.21"
}
val junitJupiterVersion = "5.11.3"
allprojects {
group = "no.nav.helse"
version = properties["version"] ?: "local-build"
apply(plugin = "org.jetbrains.kotlin.jvm")
repositories {
val githubPassword: String? by project
mavenCentral()
/* ihht. https://github.com/navikt/utvikling/blob/main/docs/teknisk/Konsumere%20biblioteker%20fra%20Github%20Package%20Registry.md
så plasseres github-maven-repo (med autentisering) før nav-mirror slik at github actions kan anvende førstnevnte.
Det er fordi nav-mirroret kjører i Google Cloud og da ville man ellers fått unødvendige utgifter til datatrafikk mellom Google Cloud og GitHub
*/
maven {
url = uri("https://maven.pkg.github.com/navikt/maven-release")
credentials {
username = "x-access-token"
password = githubPassword
}
}
maven("https://github-package-registry-mirror.gc.nav.no/cached/maven-release")
}
/*
avhengigheter man legger til her blir lagt på -alle- prosjekter.
med mindre alle submodulene (modellen, apiet, jobs, osv) har behov for samme avhengighet,
bør det heller legges til de enkelte som har behov.
Dersom det er flere som har behov så kan det være lurt å legge avhengigheten til
dependencyResolutionManagement i settings.gradle.kts
*/
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:$junitJupiterVersion")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
configure<KotlinJvmProjectExtension> {
jvmToolchain {
languageVersion.set(JavaLanguageVersion.of("21"))
}
}
tasks {
withType<Jar> {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
}
}
subprojects {
apply(plugin = "org.jetbrains.kotlin.jvm")
apply(plugin="java-library")
apply(plugin="java-test-fixtures")
tasks {
withType<Test> {
maxHeapSize = "6G"
useJUnitPlatform()
testLogging {
events("skipped", "failed")
}
}
}
}
/**
* kjør gjerne denne slik:
*
* ./gradlew tegn_modul_graf -Putputt=EnGrad.md
*
* så får du en fin graf under /doc/EnGrad.md
*/
tasks.create("tegn_modul_graf") {
doLast {
val printer: PrintWriter = hentPrinter()
printer.println("```mermaid\n")
printer.println("classDiagram\n")
this.project.allprojects.forEach { it.listUtModulAvhengigheter(printer) }
printer.println("\n```")
printer.flush()
printer.close()
}
}
fun hentPrinter() = if (ext.properties["utputt"] != null) {
val paff = "${project.rootDir.absolutePath}/doc/${ext.properties["utputt"]}"
val fail = File(paff)
if (!fail.exists()) {
fail.createNewFile()
}
fail.printWriter()
} else PrintWriter(System.out, true)
fun Project.listUtModulAvhengigheter(printer: PrintWriter) {
val deps = mutableSetOf<String>()
this.configurations.forEach { configuration ->
if (configuration.dependencies.size > 0) {
configuration.dependencies.forEach { dependency ->
if (dependency.name.startsWith("sykepenger-") && dependency.name != this.name) {
deps.add(dependency.name)
}
}
}
}
if (deps.isNotEmpty()) {
deps.forEach { printer.println("\t${this.name}-->$it") }
}
}