Maven JavaDoc Plugin未遵循语言偏好,如何生成英文静态站点?
如何让Maven JavaDoc插件生成英文框架的静态HTML站点?
你已经在maven-javadoc-plugin中配置了<locale>en_US</locale>,但系统语言为德语时,生成的JavaDoc站点框架(如导航栏、按钮、系统提示文字等)仍显示为德语。结合你使用的UMLDoclet,可以通过以下两种方式解决:
方案一:给UMLDoclet显式传递Locale参数
UMLDoclet作为自定义doclet,需要额外参数才能接收Locale配置,在插件的<configuration>中添加<additionalparam>,将-locale en_US传递给它:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <configuration> <sourcepath>${project.build.directory}/generated-sources/delombok</sourcepath> <locale>en_US</locale> <source>22</source> <show>private</show> <doclint>none</doclint> <tags> <tag> <name>apiNote</name> <placement>a</placement> <head>API Note:</head> </tag> <tag> <name>implNote</name> <placement>a</placement> <head>Implementation Note:</head> </tag> </tags> <doclet>nl.talsmasoftware.umldoclet.UMLDoclet</doclet> <docletArtifact> <groupId>nl.talsmasoftware</groupId> <artifactId>umldoclet</artifactId> <version>2.1.2</version> </docletArtifact> <!-- 添加该行,传递Locale参数给UMLDoclet --> <additionalparam>-locale en_US</additionalparam> </configuration> </plugin>
方案二:强制JVM使用英文Locale
如果方案一无效,可直接在Maven运行时指定系统级Locale,覆盖德语系统的默认设置:
方式1:命令行执行时指定
mvn javadoc:javadoc -Duser.language=en -Duser.country=US
方式2:在pom.xml中配置系统属性
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <configuration> <!-- 原有配置保持不变 --> <sourcepath>${project.build.directory}/generated-sources/delombok</sourcepath> <locale>en_US</locale> <source>22</source> <show>private</show> <doclint>none</doclint> <tags> <tag> <name>apiNote</name> <placement>a</placement> <head>API Note:</head> </tag> <tag> <name>implNote</name> <placement>a</placement> <head>Implementation Note:</head> </tag> </tags> <doclet>nl.talsmasoftware.umldoclet.UMLDoclet</doclet> <docletArtifact> <groupId>nl.talsmasoftware</groupId> <artifactId>umldoclet</artifactId> <version>2.1.2</version> </docletArtifact> <!-- 添加系统属性配置 --> <systemProperties> <property> <name>user.language</name> <value>en</value> </property> <property> <name>user.country</name> <value>US</value> </property> </systemProperties> </configuration> </plugin>
原因说明
- UMLDoclet基于标准JavaDoc doclet扩展,默认不会自动继承Maven插件的
<locale>配置,需要通过<additionalparam>显式传递参数。 - 系统默认Locale会影响JVM的语言环境,进而影响doclet加载的国际化资源文件(如框架文字),因此强制指定JVM级Locale也能覆盖系统默认设置。
内容的提问来源于stack exchange,提问作者Pixelcode
相关产品推荐
相关产品推荐

