1

我正在尝试在 Sonar 中集成自定义 PMD 任务,我目前设法与 Sonar PMD 插件一起使用。

我当前的问题是使用命令行运行 sonar ant 任务。

在我的 Eclipse 工作区中,我在 Eclipse 中添加了额外的类路径条目以供 Ant 运行,它工作得很好。但是当我在命令行中运行它时,无论我如何为 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)
4

1 回答 1

3

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

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

  • 你只需要构建插件的 JAR
  • 把它放在你的“/extensions/plugins”文件夹中
  • 并重新启动声纳
于 2012-09-28T07:30:27.747 回答