Can't get dokka to generate kotlin docs on gradle/android project

匿名 (未验证) 提交于 2019-12-03 08:57:35

问题:

I'm following the gradle plugin section in https://github.com/Kotlin/dokka .

I also tried the dokka-gradle-example example in https://github.com/JetBrains/kotlin-examples/tree/master/gradle/dokka-gradle-example .

The versions I'm using are:

android: '23.1.1' dokka: '0.9.6' gradle-android-plugin: '1.5.0' kotlin: '1.0.0-rc-1036' 

but I also tried with Dokka versions from 0.9 up to 0.9.7.

The relevant parts of the output are:

...  :app:dokka FAILED :app:dokka (Thread[Daemon worker Thread 9,5,main]) completed. Took 0.766 secs.  FAILURE: Build failed with an exception.  * What went wrong: Execution failed for task ':app:dokka'. > com.intellij.mock.MockComponentManager.getPicoContainer()Lorg/picocontainer/MutablePicoContainer;  * Try: Run with --debug option to get more log output.  * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:dokka'.     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)     at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)     at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)     at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)     at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)     at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)     at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)     at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)     at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:305)     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)     at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)     at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:23)     at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:88)     at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)     at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)     at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:68)     at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:62)     at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:55)     at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:149)     at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106)     at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86)     at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80)     at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)     at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36)     at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)     at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47)     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71)     at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69)     at org.gradle.util.Swapper.swap(Swapper.java:38)     at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60)     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70)     at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39)     at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119)     at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:46)     at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)     at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) Caused by: java.lang.NoSuchMethodError: com.intellij.mock.MockComponentManager.getPicoContainer()Lorg/picocontainer/MutablePicoContainer;     at org.jetbrains.dokka.AnalysisEnvironment.createCoreEnvironment(AnalysisEnvironment.kt:78)     at org.jetbrains.dokka.Utilities.DokkaModule.configure(DokkaModule.kt:50)     at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)     at com.google.inject.spi.Elements.getElements(Elements.java:110)     at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138)     at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)     at com.google.inject.Guice.createInjector(Guice.java:96)     at com.google.inject.Guice.createInjector(Guice.java:73)     at com.google.inject.Guice.createInjector(Guice.java:62)     at org.jetbrains.dokka.DokkaGenerator.generate(main.kt:160)     at org.jetbrains.dokka.gradle.DokkaTask.generate(main.kt:63)     at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63)     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:218)     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:211)     at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:200)     at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:579)     at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:562)     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)     at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)     ... 54 more   BUILD FAILED 

UPDATE

I'm including the build files:

main build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.  buildscript {     repositories {         jcenter()     }      ext.versions = [             android: '23.1.1',             anko: '0.8.2',             dokka: '0.9.6',             gradleAndroid: '1.5.0',             kotlin: '1.0.0',             spek: '0.1.194'     ]      dependencies {         classpath "com.android.tools.build:gradle:$versions.gradleAndroid"         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"          // NOTE: Do not place your application dependencies here; they belong         // in the individual module build.gradle files     } }  allprojects {     repositories {         jcenter()     } } 

Module app/build.gradle:

buildscript {     repositories {         mavenLocal()         mavenCentral()         jcenter()     }      dependencies {         classpath "com.android.tools.build:gradle:$versions.gradleAndroid"         classpath "org.jetbrains.dokka:dokka-gradle-plugin:${versions.dokka}"     }  }  apply plugin: 'org.jetbrains.dokka' apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions'  repositories {     jcenter()     maven {         url "http://repository.jetbrains.com/all"     } }  android {     sourceCompatibility = 1.5      compileSdkVersion 23     buildToolsVersion "23.0.2"      defaultConfig {         applicationId "com.example"         minSdkVersion 15         targetSdkVersion 23         versionCode 1         versionName "1.0"     }      buildTypes {         release {             minifyEnabled true             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }          buildTypes {             debug {                 testCoverageEnabled true             }         }     }      sourceSets {         main.java.srcDirs += 'src/main/kotlin'         test.java.srcDirs += 'src/test/kotlin'     } }  dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     compile "com.android.support:appcompat-v7:$versions.android"     compile "com.android.support:design:$versions.android"     compile "com.android.support:cardview-v7:$versions.android"      compile "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin"      compile "org.jetbrains.anko:anko-common:$versions.anko"     compile "org.jetbrains.anko:anko-sdk15:$versions.anko"     compile "org.jetbrains.anko:anko-support-v4:$versions.anko"     compile "org.jetbrains.anko:anko-design:$versions.anko"     compile "org.jetbrains.anko:anko-appcompat-v7:$versions.anko"     compile "org.jetbrains.anko:anko-cardview-v7:$versions.anko"     compile "org.jetbrains.anko:anko-recyclerview-v7:$versions.anko"     compile "org.jetbrains.anko:anko-gridlayout-v7:$versions.anko"      testCompile "org.jetbrains.spek:spek:$versions.spek"     testCompile "org.jetbrains.kotlin:kotlin-stdlib:$versions.kotlin" }  dokka { } 

回答1:

The problem is that the current version of dokka is unable to pick up the sourceSets defined within the android block of the build.gradle file.

To work around this until it is fixed (I'll create an issue on the dokka Github repository), you can duplicate the sourceSets outside of the android block so that dokka can figure it out.

android {   ...    sourceSets {     main.java.srcDirs += 'src/main/kotlin'     test.java.srcDirs += 'src/test/kotlin'   } }  sourceSets {   main.java.srcDirs += 'src/main/kotlin'   test.java.srcDirs += 'src/test/kotlin } 

I had the same problem and this fixed it for me.



回答2:

The dokka documentation deals with Android separately:

If you are using Android there is a separate gradle plugin. Just make sure you apply the plugin after com.android.library and kotlin-android.

Try using classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${versions.dokka}" as a dependency and adding apply plugin: 'org.jetbrains.dokka-android' to the end of your plugin list, removing apply plugin: 'org.jetbrains.dokka' from the beginning.



回答3:

Try Kotlin 1.0.0 release, with latest Dokka 0.9.7. You have a mismatch there. The Kotlin plugin for Gradle and the Dokka versions must be compatible. If you continue to have a conflict, it could be that you have another plugin conflicting with those.

Dokka 0.9.8 or newer no longer will conflict with the Kotlin compiler version if different. It now contains what it needs embedded as shaded dependencies to avoid conflicts.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!