1
我對一個包含多個Scala子項目的項目使用Gradle(v2.3)。生成每個子項目的ScalaDoc可以按預期單獨工作(運行gradle :project-a:scaladoc
或gradle :project-b:scaladoc
)。使用Gradle爲多個子項目生成單個ScalaDoc
但如何做一個得到所有斯卡拉子項目單 ScalaDoc?下面最小項目執行
gradle scaladoc --info
時導致錯誤,一個「對空對象不能調用方法withInputStream()」:
Starting Build
Compiling settings file '/tmp/gradle-scaladoc-test/settings.gradle' using StatementExtractingScriptTransformer.
Compiling settings file '/tmp/gradle-scaladoc-test/settings.gradle' using BuildScriptTransformer.
Settings evaluated using settings file '/tmp/gradle-scaladoc-test/settings.gradle'.
Projects loaded. Root project using build file '/tmp/gradle-scaladoc-test/build.gradle'.
Included projects: [root project 'some project', project ':project-a', project ':project-b']
Evaluating root project 'some project' using build file '/tmp/gradle-scaladoc-test/build.gradle'.
Compiling build file '/tmp/gradle-scaladoc-test/build.gradle' using StatementExtractingScriptTransformer.
Compiling build file '/tmp/gradle-scaladoc-test/build.gradle' using BuildScriptTransformer.
Evaluating project ':project-a' using empty build file.
Evaluating project ':project-b' using empty build file.
All projects evaluated.
Selected primary task 'scaladoc' from project :
Tasks to be executed: [task ':scaladoc', task ':project-a:compileJava', task ':project-a:compileScala', task ':project-a:processResources', task ':project-a:classes', task ':project-a:scaladoc', task ':project-b:compileJava', task ':project-b:compileScala', task ':project-b:processResources', task ':project-b:classes', task ':project-b:scaladoc']
:scaladoc (Thread[main,5,main]) started.
:scaladoc
Executing task ':scaladoc' (up-to-date check took 0.448 secs) due to:
No history is available.
:scaladoc FAILED
:scaladoc (Thread[main,5,main]) completed. Took 0.768 secs.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':scaladoc'.
> Cannot invoke method withInputStream() on null object
* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output.
BUILD FAILED
Total time: 5.198 secs
Stopped 0 compiler daemon(s).
目錄結構:
├─ project-a/
│ └─ src/
│ └─ main/
│ └─ scala/
│ └─ package_a/
│ └─ A.scala
├─ project-b/
│ └─ src/
│ └─ main/
│ └─ scala/
│ └─ package_b/
│ └─ B.scala
├─ build.gradle
└─ settings.gradle
build.gradle
subprojects {
repositories {
mavenCentral()
}
apply plugin: 'scala'
dependencies {
compile 'org.scala-lang:scala-library:2.11.6'
}
tasks.withType(ScalaCompile) {
scalaCompileOptions.additionalParameters = ['-unchecked', '-deprecation', '-feature']
scalaCompileOptions.useAnt = false
}
}
task scaladoc(type: org.gradle.api.tasks.scala.ScalaDoc) {
group = 'Documentation'
description = 'Aggregated ScalaDoc documentation.'
title = 'Title of documentation'
destinationDir = new File(buildDir, "aggregated-api")
source subprojects.collect { project ->
project.sourceSets.main.allScala
}
scalaClasspath = files(subprojects.collect { project ->
project.sourceSets.main.compileClasspath
})
classpath = files(subprojects.collect { project ->
project.sourceSets.main.compileClasspath
})
}
settings.gradle
rootProject.name = 'some project'
include 'project-a', 'project-b'
A.scala
package package_a
case class A(value: Int)
B.scala
package package_b
case class B(value: Int)
我能找到的唯一類似的問題是"Gradle Fails to Compile Basic Scala Project",但它在這裏沒有幫助(並且是關於Gradle 1.3)。
我知道你不是問這個問題,但如果這是一個構建,你可以利用[sbt-unidoc插件](https://github.com/sbt/sbt-unidoc) –
嘗試調整其中一個許多[gradle aggregate javadoc](https://www.google.com/search?q=gradle+aggregate+javadoc)示例。 –
感謝您的建議。 sbt是沒有選擇的,它必須用Gradle來完成。 – hiddenbit