我创建了一个自定义herpderp
摇篮任务:Gradle自定义任务仅适用于某些子项目?
task herpderp(type: HerpDerpTask)
class HerpDerpTask extends DefaultTask {
@TaskAction
def herpderp() {
println "Herp derp!"
}
}
有了这个,我可以将此任务添加到其他的摇篮构建一个使用它的内部建立其他项目调用:
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
从父生成命令调用,但仅在客户端和共享子项目执行?
可以与给定模块中运行'herpderp'任务:'的gradle:MyApp的共享:herpderp' – Opal
谢谢@Opal - 你在说什么像'gradle clean build:myapp-client:herpderp:myapp-shared:herpderp'?如果是这样,有什么我可以做*包装*(它有点讨厌看),以便我可以有一个简化的构建调用?也许一种方法来包装'herpderp',以便'gradle clean build smartHerpDerp'与'gradle clean build:myapp-client:herpderp:myapp-shared:herpderp'相同。有任何想法吗?再次感谢! – smeeb
是的,这是在想什么。你还可以做的是只将herpderp添加到指定的子项目中。将尝试在一瞬间做到这一点。 – Opal