我有一个Gradle App Engine项目,正在使用Google ApppEngine Dev Server进行调试。

我不确定为什么,但是IntelliJ中的爆炸 war Artifact 指向的文件夹与Gradle用于爆炸 war 的文件夹不同。我通过在Gradle中使用指定匹配的文件夹来解决此问题

war {
    explodeWar.setDestinationDir(file("./build/libs/exploded/backend-local-test.war"))
}

一切正常进行调试。部署时,appengineDeploy任务再次在另一个文件夹中而不是我在Gradle中指定的文件夹中查找爆炸 war 。

我看了一下,但是看不到可以设置为指定appengineDeploy应对爆炸 war 的文件夹的属性。

所以总结

Google ApppEngine Dev Server正在从IntelliJ中的 Artifact 中拉出该文件夹以用于展开 war 。在Gradle中更改 war 路径似乎不会影响 Artifact 的爆炸 war 路径。
apppengineRunappengineDeploy似乎总是使用./build/exploded-backend作为爆炸 war 路径

如何在IntelliJ中获取 Artifact ,并因此在Google ApppEngine Dev Server中使用与Gradle任务相同的路径?

最佳答案

我现在使用here解决方案解决了这个问题

war {
    gradle.taskGraph.whenReady {taskGraph ->
        if (taskGraph.hasTask(appengineDeploy)) {
            explodeWar.setDestinationDir(file("./build/exploded-backend"))
        } else {
            explodeWar.setDestinationDir(file("./build/libs/exploded/backend-local-test.war"))
        }
    }
}

如果有人有更好的解决方案,请发布。

09-04 08:14
查看更多