Scaladoc 找不到 link 外部 Java 库的任何成员
Scaladoc could not find any member to link for external Java library
在我的 Scala 项目的文档中,我想 link 来自外部 Java 库的成员。
/**
* Checks whether log entries at [[org.tinylog.Level.TRACE]] will be output.
*
* @return `true` if [[org.tinylog.Level.TRACE]] level is enabled, `false` if disabled
*/
def isTraceEnabled(): Boolean = macro TaggedLoggerMacro.isTraceEnabled
org.tinylog.Level.TRACE
是来自 Java 项目的枚举值。 IntelliJ 可以很好地解决所有这些 link,但不幸的是 scaladoc 失败了。
我的命令:
C:\bin\java\jdk-9\bin\java -Xbootclasspath/a:C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.9\scala-library-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-compiler.12.9\scala-compiler-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-reflect.12.9\scala-reflect-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\modules\scala-xml_2.12.0.6\scala-xml_2.12-1.0.6.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.0\scala-library-2.12.0.jar -classpath C:\Users\martin\.m2\repository\net\alchim31\maven\scala-maven-plugin.1.1\scala-maven-plugin-4.1.1.jar scala_maven_executions.MainWithArgsInFile scala.tools.nsc.ScalaDoc C:\data\martin\TEMP\scala-maven-14328178310010851042.args
我的观点:
-doc-external-doc
"C:\tinylog 2.0\tinylog-api\target\tinylog-api-2.1-SNAPSHOT.jar#https://tinylog.org/v2/javadoc/"
-classpath
C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.9\scala-library-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-reflect.12.9\scala-reflect-2.12.9.jar;C:\Users\martin\.m2\repository\org\tinylog\tinylog-api.1-SNAPSHOT\tinylog-api-2.1-SNAPSHOT.jar
-doc-format:html
-doc-title
"tinylog Scala API 2.1-SNAPSHOT API"
-d
"C:\tinylog 2.0\tinylog-api-scala\target\site\scaladocs"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\Logger.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\LoggerMacro.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLoggerMacro.scala"
输出(总共115个警告):
C:\PROGS\dev\var\private\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala:242: warning: Could not find any member to link for "org.tinylog.Level.TRACE".
/**
^
C:\PROGS\dev\var\private\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala:229: warning: Could not find any member to link for "org.tinylog.Level.TRACE".
/**
^
如何从外部 Java 图书馆正确地 link 给会员?
正如 pme 在评论中提到的,scaladoc 不支持链接到 Javadoc:
results from scaladoc not processing Javadoc comments in Java sources nor linking to Javadoc
(https://www.scala-sbt.org/1.x/docs/Howto-Scaladoc.html)
因此,我决定使用完整的 URL 来链接来自外部 Java 库的枚举值。这不是很方便,但是很管用。
/**
* Checks whether log entries at [[https://tinylog.org/v2/javadoc/org/tinylog/Level.html#TRACE TRACE]] will be output.
*
* @return `true` if [[https://tinylog.org/v2/javadoc/org/tinylog/Level.html#TRACE TRACE]] level is enabled, `false` if disabled
*/
def isTraceEnabled(): Boolean = macro LoggerMacro.isTraceEnabled
我认为这是一种解决方法,而不是一种优雅的解决方案。欢迎任何更好的解决方案:)
在我的 Scala 项目的文档中,我想 link 来自外部 Java 库的成员。
/**
* Checks whether log entries at [[org.tinylog.Level.TRACE]] will be output.
*
* @return `true` if [[org.tinylog.Level.TRACE]] level is enabled, `false` if disabled
*/
def isTraceEnabled(): Boolean = macro TaggedLoggerMacro.isTraceEnabled
org.tinylog.Level.TRACE
是来自 Java 项目的枚举值。 IntelliJ 可以很好地解决所有这些 link,但不幸的是 scaladoc 失败了。
我的命令:
C:\bin\java\jdk-9\bin\java -Xbootclasspath/a:C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.9\scala-library-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-compiler.12.9\scala-compiler-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-reflect.12.9\scala-reflect-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\modules\scala-xml_2.12.0.6\scala-xml_2.12-1.0.6.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.0\scala-library-2.12.0.jar -classpath C:\Users\martin\.m2\repository\net\alchim31\maven\scala-maven-plugin.1.1\scala-maven-plugin-4.1.1.jar scala_maven_executions.MainWithArgsInFile scala.tools.nsc.ScalaDoc C:\data\martin\TEMP\scala-maven-14328178310010851042.args
我的观点:
-doc-external-doc
"C:\tinylog 2.0\tinylog-api\target\tinylog-api-2.1-SNAPSHOT.jar#https://tinylog.org/v2/javadoc/"
-classpath
C:\Users\martin\.m2\repository\org\scala-lang\scala-library.12.9\scala-library-2.12.9.jar;C:\Users\martin\.m2\repository\org\scala-lang\scala-reflect.12.9\scala-reflect-2.12.9.jar;C:\Users\martin\.m2\repository\org\tinylog\tinylog-api.1-SNAPSHOT\tinylog-api-2.1-SNAPSHOT.jar
-doc-format:html
-doc-title
"tinylog Scala API 2.1-SNAPSHOT API"
-d
"C:\tinylog 2.0\tinylog-api-scala\target\site\scaladocs"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\Logger.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\LoggerMacro.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala"
"C:\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLoggerMacro.scala"
输出(总共115个警告):
C:\PROGS\dev\var\private\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala:242: warning: Could not find any member to link for "org.tinylog.Level.TRACE".
/**
^
C:\PROGS\dev\var\private\tinylog 2.0\tinylog-api-scala\src\main\scala\org\tinylog\scala\TaggedLogger.scala:229: warning: Could not find any member to link for "org.tinylog.Level.TRACE".
/**
^
如何从外部 Java 图书馆正确地 link 给会员?
正如 pme 在评论中提到的,scaladoc 不支持链接到 Javadoc:
results from scaladoc not processing Javadoc comments in Java sources nor linking to Javadoc (https://www.scala-sbt.org/1.x/docs/Howto-Scaladoc.html)
因此,我决定使用完整的 URL 来链接来自外部 Java 库的枚举值。这不是很方便,但是很管用。
/**
* Checks whether log entries at [[https://tinylog.org/v2/javadoc/org/tinylog/Level.html#TRACE TRACE]] will be output.
*
* @return `true` if [[https://tinylog.org/v2/javadoc/org/tinylog/Level.html#TRACE TRACE]] level is enabled, `false` if disabled
*/
def isTraceEnabled(): Boolean = macro LoggerMacro.isTraceEnabled
我认为这是一种解决方法,而不是一种优雅的解决方案。欢迎任何更好的解决方案:)