Gradle 渐变-向现有任务添加其他任务
我正在从事一个使用EJB2的项目。创建的ejbjar需要应用服务器进行额外的处理,然后才能捆绑到war/ear中并进行部署 我已经创建了一个自定义任务,如果我显式地调用它(gradle ejbDeploy),它可以执行额外的处理,但是在将它融入gradle多项目生命周期时遇到了困难。我需要以某种方式将其添加到构建图中,以便在jar任务之后自动执行 我的第一次尝试是用Gradle 渐变-向现有任务添加其他任务,gradle,valdr-bean-validation,Gradle,Valdr Bean Validation,我正在从事一个使用EJB2的项目。创建的ejbjar需要应用服务器进行额外的处理,然后才能捆绑到war/ear中并进行部署 我已经创建了一个自定义任务,如果我显式地调用它(gradle ejbDeploy),它可以执行额外的处理,但是在将它融入gradle多项目生命周期时遇到了困难。我需要以某种方式将其添加到构建图中,以便在jar任务之后自动执行 我的第一次尝试是用 jar.doLast{ ejbDeploy.execute() } 这似乎适用于任意代码块 推荐的解决方案是什么?我认
jar.doLast{
ejbDeploy.execute()
}
这似乎适用于任意代码块
推荐的解决方案是什么?我认为有三种方法:
war {
it.dependsOn ejbDeploy
...
}
我是格拉德尔的新手,但我想说,答案真的取决于你想要完成什么 如果您希望在有人运行命令时执行任务
gradle jar
,那么方法#3就不够了
这是我为类似的事情所做的
classes {
doLast {
buildValdrConstraints.execute()
}
}
task buildValdrConstraints(type: JavaExec) {
main = 'com.github.valdr.cli.ValdrBeanValidation'
classpath = sourceSets.main.runtimeClasspath
args '-cf',valdrResourcePath + '/valdr-bean-validation.json'
}
添加以下内容,然后
ejbDeploy
将在jar
之后执行,但在war
之前执行
jar.finalizedBy ejbDeploy
请看我对格拉德尔相对来说是新手。完整的语法是:war{it.dependsOn project('ejbProject').tasks['ejbDeploy']}?这取决于您如何组织项目和子项目。如果任务包含在当前项目中(可能应该是imo),则上述语法可以正常工作。您可以使用
allprojects
和subprojects
部分在项目层次结构中注入常见任务。看:这是我问题的答案,但我已经仔细研究了我试图做的事情,并决定这应该是它自己的任务。谢谢回答:)。