【发布时间】:2018-11-23 15:08:50
【问题描述】:
我在 Windows 10 上使用 OpenJDK 11。我有一个非常简单的 POM,用于生成 Javadocs 的单个 Java 文件。以下是摘录:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
奇怪的是,只是运行mvn clean package 会导致错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:3.0.1:jar (default) on project foobar: MavenReportException: Error while generating Javadoc:
[ERROR] Exit code: 1 - javadoc: error - cannot read Input length = 1
[ERROR]
[ERROR] Command line was: C:\bin\jdk-11\bin\javadoc.exe @options @packages
在target/apidocs 中只有三个文件:javadoc.bat、options 和packages。 options 文件是最有趣的。它在任何地方都明确表示UTF-8,这是应该的。但是看看这些行:
-sourcepath
C:/projects/li��o 1/src/main/java
此项目位于C:\projects\lição 1。似乎 Java 或 Maven 或 Javadoc 插件链中的某个地方没有正确地将目录名称转换为 UTF-8。
果然;当我在 Windows 中重命名目录以删除非 ASCII 字符时,mvn clean package 工作得很好。
这似乎是一个明显的错误;一旦 Maven 启动,一切都应该是 UTF-8。 Javadoc插件有问题吗?有人知道这起源于哪里吗?我应该在哪里提交错误票?还是我做错了什么?
【问题讨论】:
-
首先你已经定义了源编码......问题是哪个编码被赋予了 Maven 使用的 JVM? issues.apache.org/jira/projects/MJAVADOC ?
-
您是否尝试将
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>添加到<properties>块? -
你能给我提供一些关于这应该做什么的参考,或者这是你没有尝试过的猜测吗?
-
请注意maven.apache.org/plugins/maven-javadoc-plugin/jar-mojo.html 很明显
encoding默认为project.build.sourceEncoding。但我们谈论的是目录名称的解释。我认为这是一个错误。 -
Mikhail,
docencoding(这是使用您提到的project.reporting.outputEncoding的配置)指定 output 编码。这与插件在options文件中放置的目录名称的编码有什么关系?你真的在你的机器上复制了这个吗?你真的看过我说的这个options文件吗?你明白这个问题了吗?
标签: java maven maven-javadoc-plugin