Skip to content
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

Gradle 8 #87

Merged
merged 12 commits into from
Apr 6, 2023
Merged

Gradle 8 #87

merged 12 commits into from
Apr 6, 2023

Conversation

TWiStErRob
Copy link
Contributor

@TWiStErRob TWiStErRob commented Apr 4, 2023

and some minor fixes to have 0 warnings in build.

@bnorm I recommend to review commit by commit, it looks like a lot, but they're all tiny changes.

Note: Kotlin 1.7.0 KMP is not compatible with Gradle 8, so the sample project needs to stay on Gradle 7.x latest. Kotlin 1.8.0 should fix all the deprecated API usage, see 85c1b08 for more.

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@christophsturm I see now what was the problem in #86. The buildconfig plugin was erroring because it was 3 years old and the pluginBundle was also really outdated.

> Task :kotlin-power-assert-plugin:kaptTestKotlin
Annotation processors discovery from compile classpath is deprecated.
Set 'kapt.include.compile.classpath=false' to disable discovery.
> Task :kotlin-power-assert-plugin:compileTestKotlin
w: P:\projects\contrib\github-kotlin-power-assert\kotlin-power-assert-plugin\src\test\kotlin\com\bnorm\power\InfixFunctionTest.kt: (357, 9): Name shadowed: main
> Task :kotlin-power-assert-plugin:compileKotlin
w: P:\projects\contrib\github-kotlin-power-assert\kotlin-power-assert-plugin\src\main\kotlin\com\bnorm\power\PowerAssertCallTransformer.kt: (174, 77): Name shadowed: newVariables
> Task :kotlin-power-assert-gradle:publishPluginJar
Execution optimizations have been disabled for task ':kotlin-power-assert-gradle:publishPluginJar' to ensure correctness due to the following reasons:
  - Gradle detected a problem with the following location: 'P:\projects\contrib\github-kotlin-power-assert\kotlin-power-assert-gradle\build\generated\source\buildConfig\main\main'. Reason: Task ':kotlin-power-assert-gradle:publishPluginJar' uses this output of task ':kotlin-power-assert-gradle:generateBuildConfig' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.4.2/userguide/validation_problems.html#implicit_dependency for more details about this problem.
Gradle detected a problem with the following location: 'P:\projects\contrib\github-kotlin-power-assert\kotlin-power-assert-gradle\build\generated\source\buildConfig\main\main'. Reason: Task ':kotlin-power-assert-gradle:publishPluginJar' uses this output of task ':kotlin-power-assert-gradle:generateBuildConfig' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.4.2/userguide/validation_problems.html#implicit_dependency for more details about this problem. This behaviour has been deprecated and is scheduled to be removed in Gradle 8.0. Execution optimizations are disabled to ensure correctness. See https://docs.gradle.org/7.4.2/userguide/more_about_tasks.html#sec:up_to_date_checks for more details.
Action "Deprecate the entire `pluginBundle` block when using Gradle version 7.6 or later,
        mark for removal in version 8.0" from https://plugins.gradle.org/plugin/com.gradle.plugin-publish/1.0.0-rc-3

Gradle publishing has to execute publishPlugins directly, because the new version already applies the Maven Publish Plugin, that creates the task "publish", which publishes to registered repositories only.
…etails below), assuming Kotlin 1.7 to 1.8 bump is not wanted yet.

* What went wrong:
Failed to notify task execution graph listener.
> org.gradle.api.reporting.DirectoryReport.setEnabled(Z)V

Caused by: java.lang.NoSuchMethodError: org.gradle.api.reporting.DirectoryReport.setEnabled(Z)V
        at org.jetbrains.kotlin.gradle.testing.internal.KotlinTestReport.disableTestReporting(KotlinTestReport.kt:242)

https://github.com/JetBrains/kotlin/blob/v1.7.0/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/testing/internal/KotlinTestReport.kt#L242

Gradle 8.0 removed that deprecated property:
https://docs.gradle.org/current/userguide/upgrading_version_7.html#report_and_testreport_api_cleanup

Fixed in Kotlin 1.8.0: JetBrains/kotlin@e902ae7

Deprecation warnings in sample project are all related to this, run: `sample$ gradlew build --warning-mode=all` for more info.
Copy link
Contributor

@christophsturm christophsturm left a comment

Choose a reason for hiding this comment

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

looks good!

@bnorm bnorm merged commit 36fe173 into bnorm:master Apr 6, 2023
@TWiStErRob TWiStErRob deleted the gradle8 branch April 6, 2023 13:21
@bnorm
Copy link
Owner

bnorm commented Apr 6, 2023

Thanks so much for this change!

@TWiStErRob
Copy link
Contributor Author

TWiStErRob commented Apr 6, 2023

No worries, please double-check your release artifacts when publishing. I tried to make it equivalent, but it was so old there was no way to check if it's correct :) Please let me know if you need help fixing something.

@bnorm
Copy link
Owner

bnorm commented Apr 10, 2023

FYI, this change did also change the plugin coordinates from gradle.plguin.com.bnorm.power:com.bnorm.power:kotlin-power-assert-gradle to com.bnorm.power:com.bnorm.power:kotlin-power-assert-gradle. Good change as that is the new standard, but just a note in case people use classpath dependencies to configure plugins. I've noted this in the release notes and will update the changelog as well.

@TWiStErRob
Copy link
Contributor Author

TWiStErRob commented Apr 10, 2023

That doesn't sound right, did you mean
com.bnorm.power.kotlin-power-assert:com.bnorm.power.kotlin-power-assert.gradle.plugin:version?
If anything, only the Gradle Marker should change, no other dependency coordinate should be different.

@bnorm
Copy link
Owner

bnorm commented Apr 10, 2023

@TWiStErRob
Copy link
Contributor Author

I hunted down why the change happened. Between the publishing plugin version 0.21.0 and 1.0.0-rc-1 they changed the automatic gradle.plugin. prefixing, no mention in Release Notes. I guess that's an internal change. The only mention I found was https://plugins.gradle.org/docs/publish-plugin-legacy#publication-failed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants