Skip to content

Upgrade IntelliJ Platform Gradle Plugin to 2.0 #4524

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 97 commits into from
Jul 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
ee4d96a
Move remaining CodeWhisperer code into Q plugin
rli May 7, 2024
e7c772d
fix classpath
rli May 9, 2024
c6b5f13
build
rli May 10, 2024
fc4fad3
Merge branch 'main' into rli/finish-mv
rli May 13, 2024
b2d425e
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 13, 2024
d6c2583
compile
rli May 13, 2024
d1e76d5
Merge branch 'main' into rli/finish-mv
rli May 15, 2024
b0b1e67
build
rli May 15, 2024
4cde2f5
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 15, 2024
8b548da
build
rli May 15, 2024
5b8d57f
build
rli May 15, 2024
2aa3084
build
rli May 15, 2024
346cf53
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 16, 2024
23e8a0d
gw
rli May 16, 2024
39880b8
core
rli May 16, 2024
7c6cfb5
Merge branch 'main' into rli/finish-mv
rli May 20, 2024
285d5cf
resources
rli May 20, 2024
18a38b4
build
rli May 20, 2024
f23e666
tst
rli May 20, 2024
c5829b7
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 21, 2024
57223dd
build
rli May 21, 2024
d4ca41a
tst
rli May 21, 2024
6a29ba7
Revert "tst"
rli May 21, 2024
a347f95
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 22, 2024
f65a820
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 23, 2024
fcd6e1d
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 24, 2024
62ccb26
wip
rli May 28, 2024
0766c60
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli May 28, 2024
a428d4f
wip
rli May 29, 2024
b2b8f75
core zip
rli May 29, 2024
9443929
sandbox
rli May 29, 2024
5014ac7
rider
rli May 30, 2024
b5fc191
rider
rli May 31, 2024
bce0184
jbr
rli May 31, 2024
18be2a1
platform dep
rli May 31, 2024
85a13c1
Merge remote-tracking branch 'origin/main' into rli/intellij-gradle-2
rli Jun 5, 2024
4f881f8
build
rli Jun 5, 2024
9088f39
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli Jun 5, 2024
29a83bf
Merge branch 'rli/finish-mv' into rli/intellij-gradle-2
rli Jun 5, 2024
28849f1
wip
rli Jun 6, 2024
3216bda
build
rli Jun 6, 2024
a6fd06d
framework
rli Jun 7, 2024
0c4310c
framework
rli Jun 10, 2024
429892b
Merge branch 'main' into rli/finish-mv
rli Jun 10, 2024
17072f0
tst
rli Jun 10, 2024
5d6233e
lint
rli Jun 10, 2024
a799ae7
Merge branch 'rli/finish-mv' into rli/intellij-gradle-2
rli Jun 10, 2024
0c9c352
build
rli Jun 11, 2024
4cd0b0c
build
rli Jun 12, 2024
7a32821
tst
rli Jun 13, 2024
1b3afa7
no gw
rli Jun 13, 2024
e482711
build
rli Jun 13, 2024
f29dee7
Merge branch 'main' into rli/finish-mv
rli Jun 14, 2024
058422a
Merge remote-tracking branch 'origin/main' into rli/finish-mv
rli Jun 14, 2024
31208e3
Merge branch 'rli/finish-mv' into rli/intellij-gradle-2
rli Jun 14, 2024
1030002
Merge remote-tracking branch 'origin/main' into rli/intellij-gradle-2
rli Jun 14, 2024
df03f93
bump
rli Jun 14, 2024
c20ca03
verify
rli Jun 14, 2024
09b8d1d
gw
rli Jun 14, 2024
a054a6d
build
rli Jun 17, 2024
f10de82
pp
rli Jun 17, 2024
4e0129c
gw
rli Jun 17, 2024
a900c26
gw
rli Jun 17, 2024
3cb7153
lint
rli Jun 18, 2024
4b4b6ad
win
rli Jun 18, 2024
3dad65c
Update settings.gradle.kts
rli Jun 20, 2024
01abc5b
tst framework
rli Jun 20, 2024
0b028bd
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 20, 2024
6199575
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 20, 2024
f1b198e
revert assertj changes
rli Jun 20, 2024
b71ad65
cleanup
rli Jun 20, 2024
7650a80
xml
rli Jun 20, 2024
7fe97e4
Update toolkit-kotlin-conventions.gradle.kts
rli Jun 21, 2024
b15ef51
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 24, 2024
1c43220
deps
rli Jun 24, 2024
e8c2366
gw dep
rli Jun 24, 2024
a6d0ef7
gw jar
rli Jun 24, 2024
9b9d43f
Update build.gradle.kts
rli Jun 25, 2024
f428dc7
Update toolkit-publishing-conventions.gradle.kts
rli Jun 25, 2024
1795f5f
Update toolkit-publishing-conventions.gradle.kts
rli Jun 25, 2024
65c7eef
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 25, 2024
2a035c7
buildscans
rli Jun 26, 2024
7bc85cb
Update windowsTests.yml
rli Jun 26, 2024
afee4d5
Security scans: Improving telemetry error messages (#4600)
laileni-aws Jun 26, 2024
35732a3
Moved to the new customization API of new solution dialog. (#4153)
ArtManyak Jun 26, 2024
e426af7
verif
rli Jun 26, 2024
d43e7be
verif
rli Jun 26, 2024
835a547
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 26, 2024
e3104ff
Update build.gradle.kts
rli Jun 26, 2024
892b505
split verify for memory
rli Jun 26, 2024
29b78d4
Decrease failure noise by increase flaky test failure threshold (#4617)
rli Jun 26, 2024
c69011b
Merge branch 'main' into rli/intellij-gradle-2
rli Jun 26, 2024
f742a25
verify
rli Jun 26, 2024
4ec6a95
syntax
rli Jun 26, 2024
7f3d351
bump rider
rli Jun 26, 2024
5a136dc
noop?
rli Jun 27, 2024
3868539
log
rli Jun 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.gradle
.intellijPlatform
out/
target/
.idea
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ allprojects {
configurations.all {
resolutionStrategy {
failOnDynamicVersions()
failOnChangingVersions()
// failOnChangingVersions()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: do we need this or can be deleted?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ideally we keep this, not sure if we can yet

}
}
}
Expand Down
1 change: 1 addition & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ dependencies {
implementation(libs.bundles.jackson)
implementation(libs.commonmark)
implementation(libs.gradlePlugin.detekt)
implementation(libs.gradlePlugin.ideaExt)
implementation(libs.gradlePlugin.intellij)
implementation(libs.gradlePlugin.kotlin)
implementation(libs.gradlePlugin.testLogger)
Expand Down
3 changes: 1 addition & 2 deletions buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ dependencyResolutionManagement {
url = uri("https://oss.sonatype.org/content/repositories/snapshots/")
content {
// only allowed to pull snapshots of gradle-intellij-plugin from here
includeModule("org.jetbrains.intellij", "org.jetbrains.intellij.gradle.plugin")
includeModule("org.jetbrains.intellij.plugins", "gradle-intellij-plugin")
includeGroupByRegex("org\\.jetbrains\\.intellij\\.platform.*")
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import org.gradle.api.provider.ProviderFactory
enum class IdeFlavor { GW, IC, IU, RD }

object IdeVersions {
private val commonPlugins = arrayOf(
"vcs-git",
private val commonPlugins = listOf(
"Git4Idea",
"org.jetbrains.plugins.terminal",
"org.jetbrains.plugins.yaml"
)
Expand All @@ -23,76 +23,70 @@ object IdeVersions {
community = ProductProfile(
sdkFlavor = IdeFlavor.IC,
sdkVersion = "2023.2.2",
plugins = commonPlugins + listOf(
"java",
bundledPlugins = commonPlugins + listOf(
"com.intellij.java",
"com.intellij.gradle",
"org.jetbrains.idea.maven",
),
marketplacePlugins = listOf(
"PythonCore:232.8660.185",
"Docker:232.8660.185"
)
),
ultimate = ProductProfile(
sdkFlavor = IdeFlavor.IU,
sdkVersion = "2023.2.2",
plugins = commonPlugins + listOf(
bundledPlugins = commonPlugins + listOf(
"JavaScript",
// Transitive dependency needed for javascript
// Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed
"com.intellij.css",
"JavaScriptDebugger",
"com.intellij.database",
"com.jetbrains.codeWithMe",
),
marketplacePlugins = listOf(
"Pythonid:232.8660.185",
"org.jetbrains.plugins.go:232.8660.142",
// https://github.com/JetBrains/gradle-intellij-plugin/issues/1056
"org.intellij.intelliLang"
)
),
rider = RiderProfile(
sdkVersion = "2023.2",
plugins = commonPlugins + listOf(
"rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
),
sdkVersion = "2023.2.5",
bundledPlugins = commonPlugins,
netFrameworkTarget = "net472",
rdGenVersion = "2023.2.3",
nugetVersion = "2023.2.0"
nugetVersion = "2023.2.5"
)
),
Profile(
name = "2023.3",
community = ProductProfile(
sdkFlavor = IdeFlavor.IC,
sdkVersion = "2023.3",
plugins = commonPlugins + listOf(
"java",
bundledPlugins = commonPlugins + listOf(
"com.intellij.java",
"com.intellij.gradle",
"org.jetbrains.idea.maven",
),
marketplacePlugins = listOf(
"PythonCore:233.11799.241",
"Docker:233.11799.244"
)
),
ultimate = ProductProfile(
sdkFlavor = IdeFlavor.IU,
sdkVersion = "2023.3",
plugins = commonPlugins + listOf(
bundledPlugins = commonPlugins + listOf(
"JavaScript",
// Transitive dependency needed for javascript
// Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed
"com.intellij.css",
"JavaScriptDebugger",
"com.intellij.database",
"com.jetbrains.codeWithMe",
),
marketplacePlugins = listOf(
"Pythonid:233.11799.241",
"org.jetbrains.plugins.go:233.11799.196",
// https://github.com/JetBrains/gradle-intellij-plugin/issues/1056
"org.intellij.intelliLang"
)
),
rider = RiderProfile(
sdkVersion = "2023.3",
plugins = commonPlugins + listOf(
"rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
),
bundledPlugins = commonPlugins,
netFrameworkTarget = "net472",
rdGenVersion = "2023.3.2",
nugetVersion = "2023.3.0"
Expand All @@ -103,45 +97,38 @@ object IdeVersions {
gateway = ProductProfile(
sdkFlavor = IdeFlavor.GW,
sdkVersion = "241.14494-EAP-CANDIDATE-SNAPSHOT",
plugins = arrayOf("org.jetbrains.plugins.terminal")
bundledPlugins = listOf("org.jetbrains.plugins.terminal")
),
community = ProductProfile(
sdkFlavor = IdeFlavor.IC,
sdkVersion = "2024.1",
plugins = commonPlugins + listOf(
"java",
bundledPlugins = commonPlugins + listOf(
"com.intellij.java",
"com.intellij.gradle",
"org.jetbrains.idea.maven",
// transitive for python
"org.toml.lang:241.14494.150",
),
marketplacePlugins = listOf(
"PythonCore:241.14494.240",
"Docker:241.14494.251"
)
),
ultimate = ProductProfile(
sdkFlavor = IdeFlavor.IU,
sdkVersion = "2024.1",
plugins = commonPlugins + listOf(
bundledPlugins = commonPlugins + listOf(
"JavaScript",
// Transitive dependency needed for javascript
// Can remove when https://github.com/JetBrains/gradle-intellij-plugin/issues/608 is fixed
"com.intellij.css",
"JavaScriptDebugger",
"com.intellij.database",
"com.jetbrains.codeWithMe",
// transitive for python
"org.toml.lang:241.14494.150",
),
marketplacePlugins = listOf(
"Pythonid:241.14494.314",
"org.jetbrains.plugins.go:241.14494.240",
// https://github.com/JetBrains/gradle-intellij-plugin/issues/1056
"org.intellij.intelliLang"
)
),
rider = RiderProfile(
sdkVersion = "2024.1",
plugins = commonPlugins + listOf(
"rider-plugins-appender" // Workaround for https://youtrack.jetbrains.com/issue/IDEA-179607
),
bundledPlugins = commonPlugins,
netFrameworkTarget = "net472",
rdGenVersion = "2024.1.1",
nugetVersion = "2024.1.0"
Expand All @@ -162,28 +149,18 @@ object IdeVersions {
open class ProductProfile(
val sdkFlavor: IdeFlavor,
val sdkVersion: String,
val plugins: Array<String> = emptyArray()
) {
fun version(): String? = if (!isLocalPath(sdkVersion)) {
sdkFlavor.name + "-" + sdkVersion
} else {
null
}

fun localPath(): String? = sdkVersion.takeIf {
isLocalPath(it)
}

private fun isLocalPath(str: String) = str.startsWith("/") || str.getOrNull(1) == ':'
}
val bundledPlugins: List<String> = emptyList(),
val marketplacePlugins: List<String> = emptyList()
)

class RiderProfile(
sdkVersion: String,
plugins: Array<String>,
val netFrameworkTarget: String,
val rdGenVersion: String, // https://central.sonatype.com/artifact/com.jetbrains.rd/rd-gen/2023.2.3/versions
val nugetVersion: String // https://www.nuget.org/packages/JetBrains.Rider.SDK/
) : ProductProfile(IdeFlavor.RD, sdkVersion, plugins)
val nugetVersion: String, // https://www.nuget.org/packages/JetBrains.Rider.SDK/
bundledPlugins: List<String> = emptyList(),
marketplacePlugins: List<String> = emptyList(),
) : ProductProfile(IdeFlavor.RD, sdkVersion, bundledPlugins, marketplacePlugins)

class Profile(
val name: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,8 @@ abstract class ToolkitIntelliJExtension(private val providers: ProviderFactory)

fun ideProfile() = IdeVersions.ideProfile(providers)

fun version(): Provider<String?> = productProfile().flatMap { profile ->
providers.provider { profile.version() }
}

fun localPath(): Provider<String?> = productProfile().flatMap { profile ->
providers.provider { profile.localPath() }
fun version(): Provider<String> = productProfile().flatMap { profile ->
providers.provider { profile.sdkVersion }
}

fun productProfile(): Provider<out ProductProfile> = ideFlavor.flatMap { flavor ->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
import org.gradle.kotlin.dsl.invoke
import org.gradle.kotlin.dsl.project
import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.kotlin.dsl.withType
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
import org.gradle.testing.jacoco.plugins.JacocoTaskExtension
import org.jetbrains.intellij.tasks.DownloadRobotServerPluginTask
import org.jetbrains.intellij.tasks.RunIdeForUiTestTask
import org.jetbrains.intellij.utils.OpenedPackages
import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.extensions.IntelliJPlatformExtension
import org.jetbrains.intellij.platform.gradle.plugins.project.DownloadRobotServerPluginTask
import org.jetbrains.intellij.platform.gradle.tasks.TestIdeUiTask
import software.aws.toolkits.gradle.ciOnly
import software.aws.toolkits.gradle.intellij.IdeFlavor
import software.aws.toolkits.gradle.intellij.IdeVersions
import software.aws.toolkits.gradle.intellij.ToolkitIntelliJExtension
import software.aws.toolkits.gradle.intellij.toolkitIntelliJ

plugins {
id("org.jetbrains.intellij")
id("toolkit-testing") // Needed so the coverage configurations are present
id("toolkit-detekt")
id("toolkit-publishing-conventions")
id("toolkit-publish-root-conventions")
}

val toolkitIntelliJ = project.extensions.create<ToolkitIntelliJExtension>("intellijToolkit").apply {
toolkitIntelliJ.apply {
val runIdeVariant = providers.gradleProperty("runIdeVariant")
ideFlavor.set(IdeFlavor.values().firstOrNull { it.name == runIdeVariant.orNull } ?: IdeFlavor.IC)
}
Expand All @@ -48,17 +45,14 @@ val gatewayResources = configurations.create("gatewayResources") {
isCanBeConsumed = false
}

intellij {
pluginName.set("aws-toolkit-jetbrains")

localPath.set(toolkitIntelliJ.localPath())
version.set(toolkitIntelliJ.version())

updateSinceUntilBuild.set(false)
instrumentCode.set(false)
intellijPlatform {
projectName = "aws-toolkit-jetbrains"
instrumentCode = false
}

tasks.prepareSandbox {
val pluginName = intellijPlatform.projectName

intoChild(pluginName.map { "$it/dotnet" })
.from(resharperDlls)

Expand All @@ -72,6 +66,13 @@ tasks.test {
}

dependencies {
intellijPlatform {
val type = toolkitIntelliJ.ideFlavor.map { IntelliJPlatformType.fromCode(it.toString()) }
val version = toolkitIntelliJ.version()

create(type, version)
}

implementation(project(":plugin-toolkit:jetbrains-core"))
implementation(project(":plugin-toolkit:jetbrains-ultimate"))
project.findProject(":plugin-toolkit:jetbrains-gateway")?.let {
Expand All @@ -86,13 +87,10 @@ dependencies {

// Enable coverage for the UI test target IDE
ciOnly {
extensions.getByType<JacocoPluginExtension>().applyTo(tasks.withType<RunIdeForUiTestTask>())
}
tasks.withType<DownloadRobotServerPluginTask> {
// TODO: https://github.com/gradle/gradle/issues/15383
version.set(versionCatalogs.named("libs").findVersion("intellijRemoteRobot").get().requiredVersion)
extensions.getByType<JacocoPluginExtension>().applyTo(tasks.withType<TestIdeUiTask>())
}
tasks.withType<RunIdeForUiTestTask>().all {

tasks.withType<TestIdeUiTask>().all {
systemProperty("robot-server.port", remoteRobotPort)
// mac magic
systemProperty("ide.mac.message.dialogs.as.sheets", "false")
Expand All @@ -118,13 +116,6 @@ tasks.withType<RunIdeForUiTestTask>().all {
suspend.set(false)
}

jvmArgs(
OpenedPackages + listOf(
// very noisy in UI tests
"--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED",
)
)

ciOnly {
configure<JacocoTaskExtension> {
// sync with testing-subplugin
Expand Down
21 changes: 12 additions & 9 deletions buildSrc/src/main/kotlin/toolkit-integration-testing.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

import org.jetbrains.intellij.platform.gradle.Constants.Configurations.Attributes
import software.aws.toolkits.gradle.ciOnly
import software.aws.toolkits.gradle.findFolders
import software.aws.toolkits.gradle.intellij.IdeVersions

// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

plugins {
id("java")
id("idea")
Expand All @@ -31,10 +32,18 @@ sourceSets {

configurations.getByName("integrationTestCompileClasspath") {
extendsFrom(configurations.getByName(JavaPlugin.TEST_COMPILE_CLASSPATH_CONFIGURATION_NAME))
attributes {
attribute(Attributes.extracted, true)
attribute(Attributes.collected, true)
}
}

configurations.getByName("integrationTestRuntimeClasspath") {
extendsFrom(configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME))
attributes {
attribute(Attributes.extracted, true)
attribute(Attributes.collected, true)
}
isCanBeResolved = true
}

Expand Down Expand Up @@ -71,12 +80,6 @@ tasks.check {

afterEvaluate {
plugins.withType<ToolkitIntellijSubpluginPlugin> {
// weird implicit dependency issue, maybe with how the task graph works?
// or because tests are on the ide classpath for some reason?
tasks.named("classpathIndexCleanup") {
mustRunAfter(tasks.named("compileIntegrationTestKotlin"))
}

// intellij plugin overrides with instrumented classes that we don't want or need
integTestTask.configure {
testClassesDirs = integrationTests.output.classesDirs
Expand Down
Loading
Loading