我们刚刚将PMD插件添加到我们的Gradle构建中,它在我的开发人员计算机上工作得很好,但在我们的构建服务器上却失败了。 错误消息是
- 出了什么问题:
任务':pmdMain'。执行失败 java.lang.NoClassDefFoundError:org / w3c / dom / ElementTraversal
Gradle版本和Java版本在两台机器上都是相同的 - " Gradle 2.7"和" 1.8.0_60(Oracle Corporation 25.60-b23)"。
我已经看到有些人遇到了xml-apis依赖问题,但是当我运行" gradle依赖"在我的本地机器上没有xml-apis-dependency。
修改 尽管它感觉不对,但我已尝试在xml-apis中添加依赖项,但结果相同。
有什么想法吗?
关心彼得
答案 0 :(得分:2)
这可能是由于xerxes版本,PMD正在使用,它过渡依赖于xml-apis。虽然Gradle和Java版本相同,但文件系统可能不同,因此类路径排序可能不同 - 例如一个不同的xml-apis jar文件可以隐藏另一个。
默认情况下,gradle uses PMD 5.2.3。
然而,在PMD 5.3.0中,有两件事发生了变化:
因此,将toolVersion
设置为5.3.5
甚至5.4.0
可以避免此问题。
pmd {
toolVersion = "5.3.5"
...
}