【发布时间】:2019-11-26 14:52:00
【问题描述】:
我正在使用这样的 Maven Javadoc 插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
我安装了多个 JDK 版本,并希望能够使用其中任何一个构建项目。上述配置在 Java 8 上运行良好,但在 Java 11 上失败并出现以下错误
未能执行目标 org.apache.maven.plugins:maven-javadoc-plugin:3.1.1:jar (attach-javadocs) 项目 ...: MavenReportException: Error while 生成 Javadoc:找不到 javadoc 命令:环境 变量 JAVA_HOME 未正确设置。
显而易见的解决方案是设置 JAVA_HOME。但正如我所提到的,我有多个版本的 JDK,所以每次我想使用另一个版本时重新配置 JAVA_HOME 一点也不方便。
另一个解决方案(来自Unable to find javadoc command - maven)是在插件中添加以下配置:
<configuration>
<javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
</configuration>
这使它适用于 Java 11,但会破坏 Java 8,因为在这种情况下,javadoc 的位置是 ${java.home}/../bin/javadoc。
理想情况下,我总是想使用 Maven 使用的 java 可执行文件所在目录中的 javadoc,但我还没有找到使用 Maven Javadoc 插件的方法。
【问题讨论】:
-
“这使它可以与 Java 11 一起使用,但会破坏 Java 8,因为在这种情况下,javadoc 的位置是 ${java.home}/../bin/javadoc。” Java 8
javadoc是怎么来的${java.home}/../bin/javadoc?我检查了自己的 Java 8。它是${java.home}/bin/javadoc -
@QingfeiYuan 尝试使用 JDK 8 运行
System.out.println(System.getProperty("java.home"));。输出将是<your jdk directory>/jre,而javadoc在<your jdk directory>/bin中。 -
哦.. 如果是这样,那很简单,不要使用
${java.home}。使用{$JAVA_HOME}这个环境变量是你自己定义的。 -
@QingfeiYuan 请重读我的问题。我解释了为什么我不想使用 JAVA_HOME。
标签: java maven maven-javadoc-plugin