2015-12-02 7 views
6

Ich habe versucht, eine benutzerdefinierte Findbugs-Aufgabe mit Gradle, die einen anderen pluginClasspath als die Standard haben werden.So konfigurieren Sie eine benutzerdefinierte Findbugs-Aufgabe in Gradle mit einem anderen pluginClasspath

Daher sollten die Standardaufgaben die Standardregeln von FindBugs verwenden, während die benutzerdefinierten die Regeln für die Findbugs-Sicherheit verwenden sollten. Meine Konfiguration sieht wie folgt aus:

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) 
} 

Allerdings, wenn ich die findbugsMain Aufgabe jetzt laufen, sondern schließt auch die Kontrollen von findbugs-Sicherheit!

Wie kann ich es so konfigurieren, dass Findbugs-Sicherheitsüberprüfungen nur in der benutzerdefinierten Aufgabe verwendet werden?

Antwort

3

Es klingt wie die Konfiguration der findbugsSecurity Aufgabe ändert sich auch das Verhalten von findbugsMain, wie Sie wahrscheinlich geraten haben.

Der Trick ist, um eine neue Konfiguration zu verwenden, da Gradle automatisch Abhängigkeiten für die findbugsPlugins Konfiguration aussehen wird und dass für alle Beschwörungen findbugs gelten (siehe pluginClasspath part of FindBugs DSL):

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

Great! Ich habe in der Dokumentation nicht gesehen, dass 'findbugsPlugins'-Abhängigkeiten standardmäßig für das findbugs-Plugin verwendet werden – Kutzi