2015-12-02 64 views
6

我試圖用gradle設置一個自定義findbugs任務,該任務將具有與默認值不同的pluginClasspath。如何使用不同的pluginClasspath配置gradle中的自定義findbugs任務

因此,默認任務應使用默認的FindBugs規則,而自定義任務應使用findbugs-security規則。我的配置是這樣的:

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

但是,如果我現在運行findbugsMain任務,還包括從FindBugs的安全支票!

如何配置它以便findbugs安全檢查僅用於自定義任務中?

回答

3

聽起來好像配置findbugsSecurity任務也正在改變findbugsMain的行爲,正如您可能已經猜到的那樣。

的技巧是使用一個新的配置,因爲搖籃會自動尋找依存關係的findbugsPlugins配置,這將適用於FindBugs的(見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

太好了!我沒有在文檔中看到,findbugsPlugins的依賴項默認用於findbugs插件 – Kutzi

相關問題