project.afterEvaluate
を使用するプラグインを適用し、プログラムでプラグインを探して、それが適用されている場合は、pmd
ブロックを確認し、必要に応じて設定します。プラグインが適用されていない場合は、プラグインを適用し、ブロックのデフォルトを設定します。
apply plugin: "groovy"
group = 'com.jbirdvegas.q41683529'
version = '0.1'
repositories {
jcenter()
}
class PmdWrapper implements Plugin<Project> {
@Override
void apply(Project target) {
target.afterEvaluate {
def pmdPlugin = target.plugins.findPlugin(PmdPlugin)
// check if the plugin is already applied if not apply it
if (!pmdPlugin) {
target.plugins.apply(PmdPlugin)
}
// get a reference to the extension and use it to manipulate the values
println target.pmd.ruleSets
setValues(target.pmd as PmdExtension)
println target.pmd.ruleSets
println "Now configured ruleSets: ${(target.pmd as PmdExtension).ruleSets}"
}
}
static setValues(PmdExtension pmd) {
// here you can set the values or add or manipulate as needed
if (!pmd.ruleSets.contains('basic') || !pmd.ruleSets.contains('braces')) {
pmd.ruleSets << "basic" << "braces"
}
// blah for other values
}
}
apply plugin: PmdWrapper
task nothing {}
次にあなたが
$ ./gradlew -b build_simple.gradle nothing -q
[java-basic]
[java-basic, basic, braces]
Now configured extension: [java-basic, basic, braces]
に構成されているPMDプラグインの結果を見ることができます