gpt4 book ai didi

gradle - Gradle插件指定默认扩展名

转载 作者:行者123 更新时间:2023-12-03 03:49:32 25 4
gpt4 key购买 nike

我计划编写包装几个代码质量gradle插件的自定义插件。逻辑很简单:使用这种自定义质量,我想对我们所有的项目强制执行“默认”标准。另一方面,我希望所有包装的插件仍可自定义(例如,默认情况下,我想将PMD插件设置为“基本”规则集,但绝对不希望任何人添加其他规则集)。

推荐的扩展级联策略是什么?

  • 我是否应该对所有插件都进行project.create({extension}),检查值是否已设置并设置为默认值(以及如何将默认值与插件扩展以及用户设置的默认值区分开?)
  • 我应该创建myOwnExtension并从此自定义文件夹中设置包装的插件扩展的值吗?
  • 还有其他方法如何自动进行级联吗?

  • 谢谢!

    最佳答案

    您可以应用一个使用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 {}

    然后,您可以看到配置了pmd插件的结果
    $ ./gradlew -b build_simple.gradle nothing -q
    [java-basic]
    [java-basic, basic, braces]
    Now configured extension: [java-basic, basic, braces]

    关于gradle - Gradle插件指定默认扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683529/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com