如何为sbt使用GenJavaDoc插件?

如何为sbt使用GenJavaDoc插件?,java,sbt,javadoc,Java,Sbt,Javadoc,我有一个非常基本的sbt项目,除了一个.java文件之外,所有的scala代码,我需要为它生成一个标准的javadoc网页 我试着按照上面的说明去做。我已将以下所有代码“集成到SBT构建非常简单”,其中定义了变量JavaDoc和javadocSettings,复制到我的build.SBT文件中,并添加了以下内容: resolvers += "Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases/" autoComp

我有一个非常基本的sbt项目,除了一个
.java
文件之外,所有的scala代码,我需要为它生成一个标准的javadoc网页

我试着按照上面的说明去做。我已将以下所有代码“集成到SBT构建非常简单”,其中定义了变量
JavaDoc
javadocSettings
,复制到我的
build.SBT
文件中,并添加了以下内容:

resolvers += "Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases/"

autoCompilerPlugins := true
说明书上说我必须“将[]
javadocSettings
添加到
项目
”我不知道这是什么意思。这是自述文件中的代码所做的,还是我需要单独做的事情?如果是,怎么做

在任何情况下,自述文件继续写道:“可以使用
genjavadoc:doc
生成JavaDoc”,然而,在
sbt
中,我看到:

> genjavadoc:doc
[error] No such setting/task
[error] genjavadoc:doc
[error]               ^
>

我缺少什么?

您需要一个配置,正如插件的
README.md
中所述。您的任务调用不起作用,因为sbt中没有正常的
genjavadoc

您必须按照插件文档中的说明添加它。在
build.sbt
文件中添加插件推荐的以下内容(保留现有内容):

现在您应该能够使用
genjavadoc:doc
生成javadoc了

鉴于上述情况,完整的
build.sbt
可能如下所示:

resolvers += "Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases/"

lazy val root = project.in(file(".")).configs(JavaDoc).settings(javadocSettings: _*)

lazy val JavaDoc = config("genjavadoc") extend Compile

lazy val javadocSettings = inConfig(JavaDoc)(Defaults.configSettings) ++ Seq(
  libraryDependencies += compilerPlugin("com.typesafe.genjavadoc" %% "genjavadoc-plugin" % "0.7" cross CrossVersion.full),
  scalacOptions <+= target map (t => "-P:genjavadoc:out=" + (t / "java")),
  packageDoc in Compile <<= packageDoc in JavaDoc,
  sources in JavaDoc <<= (target, compile in Compile, sources in Compile) map ((t, c, s) =>
      (t / "java" ** "*.java").get ++ s.filter(_.getName.endsWith(".java"))),
  javacOptions in JavaDoc := Seq(),
  artifactName in packageDoc in JavaDoc :=
    ((sv, mod, art) => "" + mod.name + "_" + sv.binary + "-" + mod.revision + "-javadoc.jar")
)
lazy val javadocSettings = inConfig(JavaDoc)(Defaults.configSettings) ++ Seq(
  addCompilerPlugin("com.typesafe.genjavadoc" %% "genjavadoc-plugin" % "0.7" cross CrossVersion.full),
  scalacOptions += s"-P:genjavadoc:out=${target.value}/java",
  packageDoc in Compile := (packageDoc in JavaDoc).value,
  sources in JavaDoc := 
    (target.value / "java" ** "*.java").get ++ (sources in Compile).value.filter(_.getName.endsWith(".java")),
  javacOptions in JavaDoc := Seq(),
  artifactName in packageDoc in JavaDoc :=
    ((sv, mod, art) => "" + mod.name + "_" + sv.binary + "-" + mod.revision + "-javadoc.jar")
)  

很好,谢谢!这在插件的自述文件中会很好。@AdamMackler我想如果你觉得这样,你应该做一个pull请求;)另外,
autoCompilerPlugins:=true
似乎没有必要。@AdamMackler我已经删除了
autoCompilerPlugins:=true
,正如您在回答中所建议的,thx。
resolvers += "Typesafe Releases" at "https://repo.typesafe.com/typesafe/releases/"

lazy val root = project.in(file(".")).configs(JavaDoc).settings(javadocSettings: _*)

lazy val JavaDoc = config("genjavadoc") extend Compile

lazy val javadocSettings = inConfig(JavaDoc)(Defaults.configSettings) ++ Seq(
  libraryDependencies += compilerPlugin("com.typesafe.genjavadoc" %% "genjavadoc-plugin" % "0.7" cross CrossVersion.full),
  scalacOptions <+= target map (t => "-P:genjavadoc:out=" + (t / "java")),
  packageDoc in Compile <<= packageDoc in JavaDoc,
  sources in JavaDoc <<= (target, compile in Compile, sources in Compile) map ((t, c, s) =>
      (t / "java" ** "*.java").get ++ s.filter(_.getName.endsWith(".java"))),
  javacOptions in JavaDoc := Seq(),
  artifactName in packageDoc in JavaDoc :=
    ((sv, mod, art) => "" + mod.name + "_" + sv.binary + "-" + mod.revision + "-javadoc.jar")
)
lazy val javadocSettings = inConfig(JavaDoc)(Defaults.configSettings) ++ Seq(
  addCompilerPlugin("com.typesafe.genjavadoc" %% "genjavadoc-plugin" % "0.7" cross CrossVersion.full),
  scalacOptions += s"-P:genjavadoc:out=${target.value}/java",
  packageDoc in Compile := (packageDoc in JavaDoc).value,
  sources in JavaDoc := 
    (target.value / "java" ** "*.java").get ++ (sources in Compile).value.filter(_.getName.endsWith(".java")),
  javacOptions in JavaDoc := Seq(),
  artifactName in packageDoc in JavaDoc :=
    ((sv, mod, art) => "" + mod.name + "_" + sv.binary + "-" + mod.revision + "-javadoc.jar")
)