-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathbuild.gradle.kts
65 lines (58 loc) · 1.95 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
plugins {
// apply the Pkl plugin
id("org.pkl-lang") version("0.27.0")
// if the `idea` plugin is applied, the Pkl plugin makes generated code visible to IntelliJ IDEA
idea
`java-library`
}
java {
sourceCompatibility = JavaVersion.VERSION_17
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.pkl-lang:pkl-config-java:0.27.0")
}
// Register a code generator named "configClasses".
// This adds a task with the same name.
//
// The generated classes are automatically added to the `main` source set,
// which means they are accessible from production and test code.
// Alternatively, a different `sourceSet` can be configured.
//
// By default, generated classes are written to `outputDir` "$projectDir/generated/$generatorName".
// This tends to work better for IDEs than writing generated classes
// to the build output directory, which is typically excluded by IDEs.
pkl {
javaCodeGenerators {
register("configClasses") {
sourceModules.set(files("src/main/resources/Birds.pkl"))
generateJavadoc.set(true)
}
}
evaluators {
// Create an evaluator that evaluates the application's runtime configuration.
// This creates an equally named task called "testPklConfig".
//
// This task is registered as a dependency to `check`, so that Pkl modules are checked for
// correctness as part of a project's tests.
register("testPklConfig") {
sourceModules.set(files("src/main/resources/config.pkl"))
modulePath.from(sourceSets.main.get().runtimeClasspath)
outputFile.set(file("${layout.buildDirectory.get()}/tesetPklConfig/config"))
}
}
}
tasks.check {
dependsOn(tasks.named("testPklConfig"))
}
// Runs this example.
// This task is specific to this project and not generally required.
val runExample by tasks.registering(JavaExec::class) {
mainClass.set("example.JavaCodeGeneratorExample")
classpath = sourceSets.main.get().runtimeClasspath
}
tasks.check {
dependsOn(runExample)
}