我正在尝试定义两个新的Gradle任务buildAll
和pubLocal
,以按特定顺序运行其他任务。
调用gradle buildAll
时,我希望Gradle执行与执行gradle clean build writePom
相同的操作(请参阅下面的writePom
)。
执行gradle pubLocal
时,我希望Gradle执行与执行gradle buildAll install
相同的操作。
到目前为止,这是我最好的尝试:
// build.gradle
task writePom << {
pom {
project {
groupId 'mygroup'
artifactId 'mylib'
version version
inceptionYear '2015'
licenses {
license {
name 'Blah'
url 'blah'
distribution 'blah'
}
}
}
}.writeTo("build/libs/pom.xml")
}
task buildAll(dependsOn: clean, build, writePom)
task pubLocal(dependsOn: buildAll, install)
当我对此运行gradle buildAll
时,我得到:
myuser@mymachine:~/tmp/myapp$./gradlew buildAll
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/myuser/tmp/myapp/build.gradle' line: 67
* What went wrong:
A problem occurred evaluating root project 'myapp'.
> Could not find method buildAll() for arguments [{dependsOn=task ':clean'}, task ':build', task ':writePom'] on root project 'myapp'.
关于我哪里出错的任何想法?
答案 0 :(得分:1)
这可能是复制粘贴的遗留问题,但您的字符串不会使用标准的单引号或双引号一致地引用。例如:
}.writeTo(“build/libs/pom.xml")
没有正确引用字符串,因为它使用“
字符而不是"
打开。与上面的单引号相同。
您可以从突出显示代码的方式看出,红色的所有内容都被解释为字符串。如果您的实际代码中出现这种情况,则buildAll
和pubLocal
任务将无法识别,因为它们是字符串而非代码的一部分。
<强>更新强>
由于上述答案现在无关紧要,这是另一种可能性。错误消息显示dependsOn参数中仅列出"clean"
任务。 buildAll
任务依赖项应该声明如下:
task buildAll(dependsOn: [clean, build, writePom])
与pubLocal
任务类似。
答案 1 :(得分:0)
我正在使用Gradle 2.4。以下文件包含Maven插件,使用[]
中的列表dependsOn
,并确保clean
之前必须执行build
:
apply plugin: 'maven'
task writePom << {
pom {
project {
groupId 'mygroup'
artifactId 'mylib'
version version
inceptionYear '2015'
licenses {
license {
name 'Blah'
url 'blah'
distribution 'blah'
}
}
}
}.writeTo("build/libs/pom.xml")
println "TRACER writePom"
}
task clean << { println "TRACER clean" }
task build << { println "TRACER build" }
build.mustRunAfter clean
task install << { println "TRACER install" }
task buildAll(dependsOn: [clean, build, writePom])
task pubLocal(dependsOn: [buildAll, install])
我得到这个输出(减去Gradle 3警告):
bash-3.2$ gradle buildAll
:clean
TRACER clean
:build
TRACER build
:writePom
TRACER writePom
:buildAll
BUILD SUCCESSFUL
和此:
bash-3.2$ gradle pubLocal
:clean
TRACER clean
:build
TRACER build
:writePom
TRACER writePom
:buildAll
:install
TRACER install
:pubLocal
BUILD SUCCESSFUL