Gradle构建报错DOCTYPE不被允许,如何解决?
问题
构建Spring Framework项目时,使用Gradle 7.5.1执行./gradlew build命令,遇到如下错误:
./gradlew build > Task :buildSrc:compileJava FAILED [Fatal Error] japicmp-gradle-plugin-0.3.0.pom:2:10: DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':buildSrc:compileJava'. > Could not resolve all files for configuration ':buildSrc:compileClasspath'. > Could not resolve me.champeau.gradle:japicmp-gradle-plugin:0.3.0. Required by: project :buildSrc > Could not resolve me.champeau.gradle:japicmp-gradle-plugin:0.3.0. > Could not parse POM https://plugins.gradle.org/m2/me/champeau/gradle/japicmp-gradle-plugin/0.3.0/japicmp-gradle-plugin-0.3.0.pom > DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true.
请问如何让Gradle忽略该问题?这是该特定插件的问题吗?
回答
1. 问题根源
这确实是japicmp-gradle-plugin:0.3.0的问题。该插件的POM文件包含DOCTYPE声明,而Gradle 7.x默认启用了XML安全特性http://apache.org/xml/features/disallow-doctype-decl,禁止解析带有DOCTYPE的XML文件,直接导致POM解析失败。
2. 解决方法
有三种可行方案:
- 临时全局禁用安全限制:执行构建命令时传入JVM参数,临时关闭该XML安全校验
./gradlew build -Dorg.gradle.internal.xml.disallow-doctype-decl=false - 持久化配置:在项目根目录的
gradle.properties文件中添加以下配置(文件不存在则新建),后续构建都会自动应用该设置systemProp.org.gradle.jvmargs=-Dorg.gradle.internal.xml.disallow-doctype-decl=false - 升级插件(推荐):找到项目
buildSrc/build.gradle文件,将japicmp-gradle-plugin的版本升级到0.4.0及以上,后续版本已修复POM的DOCTYPE声明问题,从根源解决冲突
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

