我有一个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 路径。
apppengineRun
和appengineDeploy
似乎总是使用./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"))
}
}
}
如果有人有更好的解决方案,请发布。