plugins/core/jetbrains-community/build.gradle.kts (73 lines of code) (raw):
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import software.aws.toolkits.gradle.intellij.IdeFlavor
import software.aws.toolkits.telemetry.generator.gradle.GenerateTelemetry
plugins {
id("java-library")
id("toolkit-testing")
id("toolkit-intellij-subplugin")
}
buildscript {
dependencies {
classpath(libs.telemetryGenerator)
}
}
private val generatedSrcDir = project.layout.buildDirectory.dir("generated-src")
sourceSets {
main {
java.srcDir(generatedSrcDir)
}
}
idea {
module {
generatedSourceDirs = generatedSourceDirs.toMutableSet() + generatedSrcDir.get().asFile
}
}
val generateTelemetry = tasks.register<GenerateTelemetry>("generateTelemetry") {
inputFiles.setFrom(file("${project.projectDir}/resources/telemetryOverride.json"))
outputDirectory.set(generatedSrcDir)
doFirst {
outputDirectory.get().asFile.deleteRecursively()
}
}
tasks.compileKotlin {
dependsOn(generateTelemetry)
}
intellijToolkit {
ideFlavor.set(IdeFlavor.IC)
}
// expose intellij test framework to fixture consumers
configurations.testFixturesCompileOnlyApi {
extendsFrom(
configurations.intellijPlatformTestDependencies.get()
)
}
// intellij java-test-framework pollutes test classpath with extracted java plugins
configurations.testFixturesApi {
exclude("com.jetbrains.intellij.java", "java")
exclude("com.jetbrains.intellij.java", "java-impl")
}
dependencies {
compileOnlyApi(project(":plugin-core:core"))
compileOnlyApi(libs.aws.apacheClient)
compileOnlyApi(libs.aws.nettyClient)
api(libs.aws.iam)
testFixturesApi(project(path = ":plugin-core:core", configuration = "testArtifacts"))
testFixturesApi(project(":plugin-core:resources"))
testFixturesApi(libs.wiremock) {
// conflicts with transitive inclusion from docker plugin
exclude(group = "org.apache.httpcomponents.client5")
// provided by IDE
exclude(group = "commons-io")
}
testImplementation(project(":plugin-core:core"))
testRuntimeOnly(project(":plugin-core:sdk-codegen"))
}
// fix implicit dependency on generated source
tasks.withType<Detekt>().configureEach {
dependsOn(generateTelemetry)
}
tasks.withType<DetektCreateBaselineTask>().configureEach {
dependsOn(generateTelemetry)
}
// hack because our test structure currently doesn't make complete sense
tasks.prepareTestSandbox {
val pluginXmlJar = project(":plugin-core").tasks.jar
dependsOn(pluginXmlJar)
intoChild(intellijPlatform.projectName.map { "$it/lib" })
.from(pluginXmlJar)
}