-
Notifications
You must be signed in to change notification settings - Fork 426
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
Dokka Gradle Plugin: Implement Gradle Worker Daemon for Dokka generation #2740
Conversation
…ser matching usage in gradle.kts files)
…' into feat/gradle_dokka_executor_service
…enerator in an isolated process
Thanks!
I've also verified that without your patch, coroutines can be built with Dokka from |
It seems like Gradle Worker is missing some dependencies |
Thanks for trying it! Yes it's possible that dependencies might be missing now that the Dokka worker executes in a separate process. It should be easy to add them back in though. (Missing dependencies isn't a big problem, even if it's annoying. Since Dokka creates a Gradle Configuration anyone would be able to fix this themselves, should a similar problem arise.) It's been a while since I've looked at this.. I can try figuring out what's missing. Do you have the full stack trace? Are there any clues in there? UPDATE: Ah I see, it's in the GitHub Actions |
I've checked it manually Stacktrace:
Coroutines branch (note: Dokka is published locally via Dokka is published from your PR, with two changes -- version for publishing and commented out |
I get an error when looking at I am very confused why this might be. I don't think this PR changes the dependencies. UPDATE: This error is confusing, but unrelated. I think it's caused by the dokka/kotlin-analysis/build.gradle.kts Line 11 in f7691fe
|
Yeah, you have to explicitly reimport your project into IDEA |
…ckage' into feat/remove_property_by_setter # Conflicts: # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt
…orker_daemon # Conflicts: # core/api/core.api # core/src/main/kotlin/DokkaBootstrapImpl.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt
…and safeConvention() with convention()
…' into feat/expose_finalizeCoroutines_in_gradle # Conflicts: # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/AbstractDokkaTask.kt
…es_in_gradle' into feat/gradle_dokka_worker_daemon # Conflicts: # .github/workflows/qodana.yml
…y_by_setter-original # Conflicts: # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/sourceSetKotlinGistConfiguration.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/utils.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaMultiModuleFileLayoutTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaCollectorTaskTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaMultiModuleTaskTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaTaskTest.kt
…sl_plugin # Conflicts: # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/utils.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTaskTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaTaskTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilderTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/KotlinDslDokkaTaskConfigurationTest.kt
…_task_package # Conflicts: # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt
…le_dokka_worker_daemon # Conflicts: # core/src/main/kotlin/DokkaBootstrapImpl.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/tasks/AbstractDokkaTask.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaCollectorTaskTest.kt
…te_gradle_utils_with_kotlin_dsl
…dle_utils_with_kotlin_dsl # Conflicts: # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationJsonTest.kt # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/DokkaConfigurationSerializableTest.kt
…h_kotlin_dsl' into feat/gradle_dokka_worker_daemon # Conflicts: # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/tasks/AbstractDokkaTask.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaCollectorTask.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaTask.kt # runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/tasks/DokkaTaskPartial.kt
# Conflicts: # runners/gradle-plugin/src/test/kotlin/org/jetbrains/dokka/gradle/tasks/AbstractDokkaParentTaskTest.kt
Obsolete. Dokka Plugin v2 will use the worker API. #3695 |
Refactor the way dokka-gradle executes a Dokka generation task to use a Gradle Worker Daemon. The Worker is configured to use the same classpath as the existing reflection-based process.
Using a Worker Daemon completely replaces the existing 'reflection magic'. I think this is a lot more simple and easier to understand than the previous method of using reflection to create an instance.
This PR is a further improvement upon #2709, which required a main method. Using the Gradle Worker API means the dokka-core code can be called idiomatically. However, I am not sure about the compatibility with Gradle versions. #2709 might be more compatible...
Benefits:
I haven't tested extensively so there might be some breaking changes. Of particular note:
This PR includes
finalizeCoroutines
as Gradle task option #2759