我正在尝试在Sonar中集成自定义PMD任务,我目前设法与Sonar PMD插件一起工作。
我目前的问题是使用命令行运行声纳ant任务。
在我的eclipse工作区中,我在Eclipse中添加了额外的类路径条目以供Ant运行,它运行正常。 但是当我在命令行中运行它时,无论我如何通过jar传递ant,它似乎都没有在ClassLoader中使用它。
一旦我无法将任务放在我的持续集成服务器中运行,这对我的项目来说是个大问题。
我正在使用属性sonar.libraries传递包含所有需要的类的jar。
我得到的错误是:
build.xml:121: java.lang.NoClassDefFoundError: net/sourceforge/pmd/AbstractJavaRule
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
答案 0 :(得分:2)
“sonar.libraries”仅引用应用程序的依赖项,而不引用Sonar执行上下文的依赖项。
如果您想开发Sonar将使用的自定义PMD任务,请查看此示例插件:https://github.com/SonarSource/sonar-examples/tree/master/plugins/sonar-pmd-extension-plugin