8

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 {
}
Jayson Minard
  • 84,842
  • 38
  • 184
  • 227
Tiago Reul
  • 91
  • 1
  • 4
  • The documentation states: You have to apply the dokka plugin **after** the kotlin and the `com.android.application` plugins. Try to change the order. – lampenlampen Apr 13 '17 at 11:50

4 Answers4

3

[UPDATE] This is reported as fixed with https://github.com/Kotlin/dokka/pull/64.


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.

eski
  • 7,917
  • 1
  • 23
  • 34
  • May you provide a link to the GitHub issue @eski. I'm having an issue running the dokka task due to an added `buildType`. – AdamHurwitz Oct 03 '19 at 00:49
  • 1
    It was https://github.com/Kotlin/dokka/issues/61 but it looks like it's been fixed now – eski Oct 03 '19 at 13:49
2

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.

Jayson Minard
  • 84,842
  • 38
  • 184
  • 227
  • Thank you for your answer. I've updated to kotlin `1.0.0` and Dokka `0.9.7`, but it still not working. Also, I removed all the other plugins, staying with `anko`, `dokka` and `spek` only, but I still can't get it to work. I'm going to try to cut down `anko` in a separate project now. – Tiago Reul Feb 20 '16 at 00:30
  • @TiagoReul without more information of the build, hard to say what is going on. You might need to try Kotlin forum discussions, or in Slack. – Jayson Minard Feb 20 '16 at 10:10
  • and Kotlin `1.0.3` with Dokka `0.9.6`. Argh. – Alexandre G Sep 12 '16 at 07:09
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.

EDIT: This should be fixed, as noted in the comment below.

Tin Man
  • 700
  • 8
  • 29
0

You can generate Dokka documentatiton without Dokka plugin... Use GradleMavenPush, it has task androidDokka(type: Exec, dependsOn: dokkaInitializer) and task coreDokka(type: Exec, dependsOn: dokkaInitializer)

apply from: 'https://raw.github.com/Vorlonsoft/GradleMavenPush/master/maven-push.gradle'

Don't forgot to set JAVADOC_BY_DOKKA = true

Alexander Savin
  • 1,952
  • 1
  • 15
  • 30