1

私はカスタムPMDタスクをSonarに統合しようとしています。これは、現在、SonarPMDプラグインと一緒に機能することができました。

私の現在の問題は、コマンドラインでソナーantタスクを実行することです。

私のEclipseワークスペースで、Antを実行するためにEclipseにクラスパスエントリを追加しました。これは問題なく機能します。しかし、コマンドラインで実行すると、antのjarをどのように渡しても、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」フォルダに入れてください
  • そしてSonarを再起動します
于 2012-09-28T07:30:27.747 に答える