gradle - 对子项目 war 任务的依赖

标签 gradle

我有以下结构:

./build.gradle
./api
./api/build.gradle
./web
./web/build.gradle
./other
./other/build.gradle

apiweb项目都使用了war插件,但是other项目只有java 插件。

我想在根项目中为 heroku 定义一个任务,即:

  • 对所有拥有它的子项目执行clean任务
  • 对所有拥有它的子项目执行war任务
  • 对所有拥有它的子项目执行build任务

我看到了这个答案:Gradle batch task that invokes subproject and other tasks in order 但它失败了。尝试了以下配置

task stage() {
    dependsOn subprojects.clean
    dependsOn subprojects.war
    dependsOn subprojects.build
}

并得到这个错误:

* What went wrong:
A problem occurred evaluating root project 'baltona-mdm'.
> Could not find property 'war' on project ':api'.

(api war 插件,如果我取消注释任务阶段,我可以运行gradle :api:war)

我该怎么做?

最佳答案

错误的解决方法:

Could not find property 'war' on project ':api'

是为了使用

evaluationDependsOnChildren()

然而,对于标题中的问题,我想出了类似的东西:

task stage() {

    subprojects.each({p ->
            dependsOn p.clean
        if(hasWarTask(p)) {
            dependsOn p.war
        } else {
            dependsOn p.build
        }
    })
}

private boolean hasWarTask(Project p) {
    !p.getTasksByName("war", false).isEmpty()
}

我不喜欢它,所以如果有人有更好的解决方案,我愿意接受替代方案。

关于gradle - 对子项目 war 任务的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22788890/

相关文章:

android - Gradle 项目刷新失败 - 协议(protocol)系列不可用

java - Gradle 生成的 Scala JAR 出现 "Could not find or load main class"错误

java - 一个Gradle项目可以继承多个父项目吗?

eclipse - Eclipse/LibGDX无法加载工具扩展->粒子效果

java - 无法将插件添加到Gradle构建文件中?

android - 多次定义BuildConfig,Gradle Test Build报错

更改 build.gradle 时出现 java.lang.ClassNotFoundException : javax. persistence.EntityManagerFactory

java - testCompile的“Unresolved reference:”错误

java - 是否需要为 x86 架构创建单独的 .APK 文件?

spring-boot - Gradle构建失败,因为使用RestTemplate的测试