intellij-platform-gradle-plugin: Gradle 8.0-RC1 Compatibility: Don't use internal Gradle classes

Describe the bug Use Intellij 1.11 with Gradle 8.0-rc-1

Caused by: java.lang.NoSuchMethodError: 'void org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact.<init>(org.gradle.api.tasks.bundling.AbstractArchiveTask)'
	at org.jetbrains.intellij.IntelliJPlugin$configureBuildPluginTask$1.invoke(IntelliJPlugin.kt:1383)
	at org.jetbrains.intellij.IntelliJPlugin$configureBuildPluginTask$1.invoke(IntelliJPlugin.kt:117)
	at org.jetbrains.intellij.IntelliJPlugin$inlined$sam$i$org_gradle_api_Action$0.execute(TaskContainerExtensions.kt)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:45)
	at org.gradle.configuration.internal.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:123)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107)
	at org.gradle.internal.ImmutableActionSet$SetWithManyActions.execute(ImmutableActionSet.java:329)
	at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:262)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:113)
	at org.gradle.api.internal.DefaultDomainObjectCollection.add(DefaultDomainObjectCollection.java:256)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:944)
	... 202 more

Reason: ArchivePublishArtifact is an internal Gradle classes and should not be used from plugin authors, because there is no binary compatibility guaranty.

https://github.com/JetBrains/gradle-intellij-plugin/blob/ab1a88b94df74d1d905b09742b8ec6ad9ed86ecb/src/main/kotlin/org/jetbrains/intellij/IntelliJPlugin.kt#L1374

To Reproduce Use Gradle 8.0-rc-1

Expected behavior A working build

Environment:

  • OS: ubuntu 22.04
  • Gradle IntelliJ Plugin Version: 1.11.0
  • Gradle Version: 8.0-rc-1

Additional context n/A

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 5
  • Comments: 22 (15 by maintainers)

Most upvoted comments

1.12.1-SNAPSHOT works for us. Any chance it can get a proper 1.12.1 release so we can play a bit more with Gradle 8 release candidates?

@mgroth0 You have to use the plugin id as dependency: see https://github.com/JetBrains/gradle-intellij-plugin/issues/1272#issuecomment-1386676182 implementation("org.jetbrains.intellij:org.jetbrains.intellij.gradle.plugin:1.12.2-SNAPSHOT")

Okay, found the snapshot, but the published artifacts are strange. Normally, you have to use your group (org.jetbrains.intellij.plugins) and your project name (gradle-intellij-plugin) resulting into a jar file containing your real code here: https://plugins.gradle.org/m2/org/jetbrains/intellij/plugins/gradle-intellij-plugin/ To let Gradle find this plugin, there is another marker pom file published under org.jetbrains.intellij:org.jetbrains.intellij.gradle.plugin (the plugin-id:plugin-id.gradle.plugin) But the snapshot repo does only contain the code jar using the marker id, and not the real id. If you use the normal plugin { } function, this does not matter, but using the classpath or the new build logic function, this is relevant.