-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
69 lines (62 loc) · 2.58 KB
/
build.gradle.kts
File metadata and controls
69 lines (62 loc) · 2.58 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
/**
* Copyright © 2026 Apple Inc. and the Pkl project authors. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
plugins {
// apply the Pkl plugin
id("org.pkl-lang") version ("0.31.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.31.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) }