Files
pkl/pkl-gradle/pkl-gradle.gradle.kts
translatenix 496e064caf Update to Gradle 8.6 (#245)
- Fix and clean up the pkl-commons-test build script.
- Change tests to read test packages/certs directly from
  the file system instead of packaging and reading them
  from the class path.
- Update expected checksums of some test packages.
- Fix a conflict between Pkl's and Gradle's
  Kotlin libraries in the pkl-gradle project.
- Fix build deprecation warnings.
- Ensure Gradle distribution integrity with `distributionSha256Sum`.
- Manually verify integrity of Gradle wrapper added by this commit.
2024-03-15 17:00:23 -07:00

80 lines
2.2 KiB
Kotlin

plugins {
pklAllProjects
pklJavaLibrary
pklGradlePluginTest
`java-gradle-plugin`
`maven-publish`
pklPublishLibrary
signing
}
dependencies {
// Declare a `compileOnly` dependency on `projects.pklTools`
// to ensure correct code navigation in IntelliJ.
compileOnly(projects.pklTools)
// Declare a `runtimeOnly` dependency on `project(":pkl-tools", "fatJar")`
// to ensure that the published plugin
// (and also plugin tests, see the generated `plugin-under-test-metadata.properties`)
// only depends on the pkl-tools shaded fat JAR.
// This avoids dependency version conflicts with other Gradle plugins.
//
// Hide this dependency from IntelliJ
// to prevent IntelliJ from reindexing the pkl-tools fat JAR after every build.
// (IntelliJ gets everything it needs from the `compileOnly` dependency.)
//
// To debug shaded code in IntelliJ, temporarily remove the conditional.
if (System.getProperty("idea.sync.active") == null) {
runtimeOnly(project(":pkl-tools", "fatJar"))
}
testImplementation(projects.pklCommonsTest)
}
sourceSets {
test {
// Remove Gradle distribution JARs from test compile classpath.
// This prevents a conflict between Gradle's and Pkl's Kotlin versions.
compileClasspath = compileClasspath.filter { !(it.path.contains("dists")) }
}
}
publishing {
publications {
withType<MavenPublication>().configureEach {
pom {
name.set("pkl-gradle plugin")
url.set("https://github.com/apple/pkl/tree/main/pkl-gradle")
description.set("Gradle plugin for the Pkl configuration language.")
}
}
}
}
gradlePlugin {
plugins {
create("pkl") {
id = "org.pkl-lang"
implementationClass = "org.pkl.gradle.PklPlugin"
displayName = "pkl-gradle"
description = "Gradle plugin for interacting with Pkl"
}
}
}
gradlePluginTests {
// keep in sync with `PklPlugin.MIN_GRADLE_VERSION`
minGradleVersion = GradleVersion.version("7.2")
maxGradleVersion = GradleVersion.version("8.99")
skippedGradleVersions = listOf()
}
signing {
publishing.publications.withType(MavenPublication::class.java).configureEach {
if (name != "library") {
sign(this)
}
}
}