sme*_*eeb 3 configuration build subproject gradle
我创建了一个自定义herpderp
Gradle任务:
task herpderp(type: HerpDerpTask)
class HerpDerpTask extends DefaultTask {
@TaskAction
def herpderp() {
println "Herp derp!"
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以将此任务添加到其他Gradle构建中,在其他项目的构建调用中使用它:
gradle clean build herpderp
Run Code Online (Sandbox Code Playgroud)
现在,我有以下多项目设置:
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
Run Code Online (Sandbox Code Playgroud)
在哪里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'
)
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里myapp/settings.gradle
:
include ':myapp-shared'
include ':myapp-client'
include ':myapp-server'
Run Code Online (Sandbox Code Playgroud)
我希望能够导航到父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}!"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1906 次 |
最近记录: |