2015-12-02 7 views
6

デフォルトのものとは異なるpluginClasspathを持つgradleでカスタムfindbugsタスクを設定しようとしました。別のpluginClasspathを使ってgradleでカスタムfindbugsタスクを設定する方法

デフォルトのタスクはデフォルトのFindBugsルールを使用し、カスタムタスクはfindbugsセキュリティルールを使用する必要があります。私の構成は次のようになります。私は今findbugsMainタスクを実行する場合

dependencies { 
    findbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4' 
} 

findbugs { 
    // general config 
} 

task findbugsSecurity(type: FindBugs, dependsOn: classes) { 
    classes = fileTree(project.sourceSets.main.output.classesDir) 
    source = project.sourceSets.main.java.srcDirs 
    classpath = files() 

    pluginClasspath = files(configurations.findbugsPlugins.asPath) 
} 

しかし、それはまた、FindBugsのセキュリティからのチェックが含まれています!

findbugs-securityチェックがカスタムタスクでのみ使用されるように設定する方法を教えてください。

答えて

3

findbugsSecurityの設定のように聞こえても、おそらく推測したように、findbugsMainの動作も変更されています。

トリックは(pluginClasspath part of FindBugs DSLを参照)のGradleが自動的findbugsPlugins構成の依存関係を探しますと、それはFindBugsのすべての呼び出しに適用されるため、新しいコンフィギュレーションを使用することです:

configurations { 
    foo 
} 

dependencies { 
    // Important that we use a new configuration here because Gradle will use the findbugsPlugins configurations by default 
    foo 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.4.4' 
} 

findbugs { /* whatever */ } 

task findbugsSecurity(type: FindBugs, dependsOn: classes) { 
    classes = fileTree(project.sourceSets.main.output.classesDir) 
    source = project.sourceSets.main.java.srcDirs 
    classpath = files() 
    pluginClasspath = files(configurations.foo.asPath) 
} 
+0

グレート!私はドキュメントでfindbugsPluginsの依存関係がデフォルトでfindbugsプラグインに使用されているのを見ていませんでした – Kutzi

関連する問題