使用命令行运行声纳ant任务 - ClassDefNotFoundError

时间:2012-09-27 20:41:58

标签: ant sonarqube pmd

我正在尝试在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)

1 个答案:

答案 0 :(得分:2)

“sonar.libraries”仅引用应用程序的依赖项,而不引用Sonar执行上下文的依赖项。

如果您想开发Sonar将使用的自定义PMD任务,请查看此示例插件:https://github.com/SonarSource/sonar-examples/tree/master/plugins/sonar-pmd-extension-plugin

  • 您只需要构建插件的JAR
  • 将其放入“/ extensions / plugins”文件夹
  • 然后重启Sonar