使用Maven生成SpringFox Swagger所需Javadoc时遇代理相关错误
解决Maven生成Javadoc时出现「Illegal package name: "!"」的问题
兄弟,我之前踩过这个坑!结合你用SpringFox Swagger的场景,这个错误大概率是Javadoc插件扫描到了不符合规范的包路径,多半和SpringFox的依赖或者插件配置有关,给你几个亲测有效的解决方向:
1. 排除可疑依赖的包扫描
有时候SpringFox相关的依赖(比如swagger-models)会带一些奇怪的资源文件,导致Javadoc误判成非法包。你可以在maven-javadoc-plugin的配置里直接排除这些有问题的包:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.0.0</version> <configuration> <!-- 直接排除所有带"!"的异常包 --> <excludePackageNames>!**</excludePackageNames> <!-- 也可以精准排除SpringFox相关的可疑包,比如: --> <!-- <excludePackageNames>io.swagger.models.**</excludePackageNames> --> <!-- 关闭文档语法检查,避免其他小问题打断生成流程 --> <additionalparam>-Xdoclint:none</additionalparam> </configuration> </plugin>
2. 升级maven-javadoc-plugin版本
你当前用的3.0.0版本存在一些兼容性问题,试试升级到更稳定的新版本(比如3.6.3),很多旧版本的bug在新版本里已经修复了:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.6.3</version> <configuration> <!-- 保留你原本的其他配置即可 --> </configuration> </plugin>
3. 检查项目自身的包结构
偶尔也会是项目里不小心创建了名称违规的包(比如包含"!"字符的目录),或者资源文件的路径出了问题。花2分钟扫一眼src/main/java和src/test/java下的包结构,有没有不符合Java命名规范的包名。
4. 把错误降级为警告
如果上面的方法都没解决,还可以给Javadoc加个参数,把非法包名的错误降级成警告,让生成流程继续走下去:
<configuration> <additionalJOption>-J-Djdk.javadoc.illegalPackageName=warn</additionalJOption> </configuration>
内容的提问来源于stack exchange,提问作者JimmyD




