如何在构建子项目后在Gradle中触发docker终端命令?

4nkexdtk  于 9个月前  发布在  Docker
关注(0)|答案(1)|浏览(90)

我有一个多项目的Gradle构建过程。其中一个“projects”在build.gradle中使用project块定义:

project(':EAR' {

  //...

  ear (
    //...
  )
}

我有一个终端命令,我想在编译项目后执行。我正在尝试使用由“dependsOn”触发的任务来完成此任务:

task copyEarToWildfly(type:Exec,dependsOn: project('EAR').tasks.getByPath('assemble')) {
    group 'Build'
    description 'Copy the EAR.ear file to the docker wildfly directory'

    workingDir "$rootDir/docker/wildfly"
    commandLine 'docker', 'cp', 'EAR.ear', 'wildfly:opt/jboss/wildfly/standalone/deployments'
}

如果我通过“./gradlew copyEARToWildFly”直接从终端运行任务copyEarToWildFly,它会工作--将.ear复制到目标位置。但是,如果我运行“./gradlew build”,则不会触发copyEARToWildFly任务。
我尝试将dependsOn任务名称从“assemble”改为“build”,再改为“ear”,但这些都不起作用。
我用的是Gradle 7.3.3。任何关于如何让我的copyEARToWildfly执行的建议,当项目构建将是受欢迎的!我是个菜鸟。

zbdgwd5y

zbdgwd5y1#

你已经试过了吗?

build.dependsOn 'copyEarToWildfly'

?最后,“构建”任务必须取决于您的copyEarToWildfly,而不是反向。您还可以引入一个新的任务,以便不仅构建,而且“部署”,如

tasks.register("deploy") {
dependsOn 'copyEarToWildfly'
}

然后,您只需运行依赖于'copyEarToWildfly'的部署任务,该任务依赖于构建耳朵的任务。

相关问题