2016-02-18 70 views
3

我正在关注https://github.com/Kotlin/dokka中的gradle插件部分。无法让dokka在gradle/android项目上生成kotlin文档

我也试过https://github.com/JetBrains/kotlin-examples/tree/master/gradle/dokka-gradle-example中的dokka-gradle-example示例。

我使用的版本是:

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

,但我也试图与Dokka版本0.9可达0.9.7。

输出的相关部分:

... 

: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

我包括生成文件:

主要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() 
    } 
} 

模块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 { 
} 
+0

该文档声明:您必须在** kotlin和'com.android.application'插件之后应用dokka插件**。尝试改变顺序。 – lampenlampen

回答

2

尝试科特林1.0.0上映,最新Dokka 0.9.7。你有一个不匹配的地方。 Gradle和Dokka版本的Kotlin插件必须兼容。如果您继续发生冲突,则可能是您的另一个插件与这些插件冲突。

Dokka 0.9.8或更新不再会与Kotlin编译器版本冲突(如果不同)。它现在包含它需要嵌入的作为阴影依赖来避免冲突。

+0

谢谢你的回答。 我已经更新到kotlin'1.0.0'和Dokka'0.9.7',但它仍然不起作用。另外,我删除了所有其他插件,只使用“anko”,“dokka”和“spek”,但我仍然无法使用它。我现在要尝试在一个单独的项目中削减“anko”。 –

+0

@TiagoReul没有更多的构建信息,很难说正在发生什么。您可能需要尝试Kotlin论坛讨论,或者在Slack。 –

+0

和带有Dokka'0.9.6'的Kotlin'1.0.3'。哎呀。 –

2

的问题是,dokka的当前版本是无法拿起sourceSets的的build.gradle文件的的Android块内定义。

要解决此问题,直到它被修复(我将在dokka Github存储库中创建一个问题),您可以复制源块以外的块,以便dokka可以找出它。

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 
} 

我有同样的问题,并为我解决这个问题。

2

与Android单独的dokka文件涉及:

如果您使用的是Android有一个单独的插件的gradle。只要确保在com.android.library和kotlin-android之后应用插件即可。

使用classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:${versions.dokka}"的依赖,增加apply plugin: 'org.jetbrains.dokka-android'到您的插件列表的末尾,从一开始就消除apply plugin: 'org.jetbrains.dokka'尝试。