maven-javadoc-plugin无法生成指定api模块Javadoc的解决方法
解决Maven多模块仅为api生成Javadoc的问题
原配置问题分析
你的父pom配置存在两个核心问题导致Javadoc未生成:
pluginManagement仅做配置管理:该标签下的插件配置不会自动执行,必须在build/plugins中显式引用才会生效。aggregate目标不符合需求:这个目标用于聚合所有子模块的Javadoc,而你需要的是仅为api模块生成,且父模块是pom打包类型,结合sourceFileIncludes的路径过滤后可能无匹配文件,导致生成失败。
解决方案
方案一:在api模块单独配置Javadoc插件(推荐)
直接在api模块的pom中配置插件,精准控制仅该模块生成Javadoc,父pom仅保留插件版本管理。
- 修改父pom的
pluginManagement部分,保留版本和通用配置:
<pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </pluginManagement>
- 在api模块的
pom.xml中添加插件执行配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs</id> <phase>package</phase> <goals> <goal>javadoc</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/javadoc</outputDirectory> <!-- 针对api模块自身路径配置过滤,更准确 --> <sourceFileIncludes> <include>**/me/suprB/pluginlogger/api/**/*.java</include> </sourceFileIncludes> </configuration> </execution> </executions> </plugin> </plugins> </build>
方案二:在父模块配置仅对api模块生效
如果不想修改api模块的pom,可以在父模块的build/plugins中配置,指定仅对api模块执行Javadoc生成:
修改父pom的build部分:
<build> <defaultGoal>clean install package</defaultGoal> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <executions> <execution> <id>attach-javadocs-api</id> <phase>package</phase> <goals> <goal>javadoc</goal> </goals> <configuration> <!-- 指定仅在api模块执行 --> <modules> <module>api</module> </modules> <outputDirectory>${project.basedir}/api/target/javadoc</outputDirectory> <sourceFileIncludes> <include>**/me/suprB/pluginlogger/api/**/*.java</include> </sourceFileIncludes> </configuration> </execution> </executions> </plugin> </plugins> </build>
验证
执行mvn clean install package后,api模块的target/javadoc目录下会生成Javadoc文件,plugin模块不会生成Javadoc。
内容的提问来源于stack exchange,提问作者suprB
相关产品推荐
相关产品推荐

