gpt4 book ai didi

configuration - Gradle 自定义任务仅适用于某些子项目?

转载 作者:行者123 更新时间:2023-12-01 11:35:23 25 4
gpt4 key购买 nike

我创建了一个自定义 herpderp Gradle 任务:

task herpderp(type: HerpDerpTask)

class HerpDerpTask extends DefaultTask {
@TaskAction
def herpderp() {
println "Herp derp!"
}
}

有了这个,我可以将此任务添加到其他 Gradle 构建中,并在其他项目的构建调用中使用它:
gradle clean build herpderp

现在,我有以下多项目设置:
myapp/
myapp-client/
build.gradle
src/** (omitted for brevity)
myapp-shared/
build.gradle
src/** (omitted for brevity)
myapp-server
build.gradle
src/** (omitted for brevity)
build.gradle
settings.gradle

哪里 myapp/build.gradle是:
subprojects {
apply plugin: 'groovy'
sourceCompatibility = '1.7'
targetCompatibility = '1.7'

repositories {
mavenLocal()
mavenCentral()
}

dependencies {
compile (
'org.codehaus.groovy:groovy-all:2.3.7'
)
}
}

哪里 myapp/settings.gradle是:
include ':myapp-shared'
include ':myapp-client'
include ':myapp-server'

我希望能够导航到父级 myapp目录,然后运行 ​​ gradler clean build herpderp并拥有 herpderp任务仅在 myapp-client 上运行和 myapp-shared项目(不是服务器项目)。

所以听起来我需要另一个自定义任务或某种类型的闭包/方法 myapp/build.gradle那:
  • 运行 clean build ;然后
  • 掉落 ( cd ) 到 myapp-client并运行 herpderp ;然后
  • 落入 myapp-shared并运行 herpderp .

  • 我需要向我的任何文件添加什么才能获得 herpderp从父构建命令调用,但仅在客户端和共享子项目中执行?

    最佳答案

    以下代码可以解决问题(应该放在 myapp/build.gradle 中):

    allprojects.findAll { it.name in ['myapp-client', 'myapp-shared'] }. each { p ->
    configure(p) {
    task herpderp(type: HerpDerpTask)
    }
    }

    class HerpDerpTask extends DefaultTask {
    @TaskAction
    def herpderp() {
    println "Herp derp from ${project.name}!"
    }
    }

    关于configuration - Gradle 自定义任务仅适用于某些子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27679044/

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