【发布时间】:2018-08-14 01:34:31
【问题描述】:
为 Grails 2.5.6 应用程序建立一个 maven 缓存路径有很多副作用,我不知道这是我找不到报告的已知错误还是我做错了。
我们的 Grails 应用程序(主要是 2.0.4 版本)在 buildConfig.groovy 中有一个 grails.war.resources 闭包,可以防止某些静态资源进入战争。然而,对于 Grails 2.5.6 应用程序,这个闭包直到我们创建了一个空的 ${HOME}/.grails/settings.groovy
才起作用是的,空的(惊喜 1)。这种情况发生在使用 Eclipse Neon 的 Windows 7 和使用 Jenkins 构建应用程序的 Red Hat Linux 中。
一旦我们有了这个 settings.groovy 文件,我们决定使用它来建立 maven 缓存路径,以便 Grails 和 Java 应用程序可以共享相同的缓存。该文件包含一行:
grails.dependency.cache.dir="D:/DEV-WAS8/CONF/m2/repository"
使用这一行代码,构建 Grails 2.0.4 应用程序会产生充满垃圾的战争,因为 grails.war.resources 闭包不起作用(surprise 2)。这没有任何意义,但至少 Grails 2.5.6 是正确构建的。所以我们尝试只为 2.5.6 应用程序建立缓存路径。 settings.groovy 如下:
if (System.getProperty("grails.version")=="2.5.6") {
grails.dependency.cache.dir="D:/DEV-WAS8/CONF/m2/repository"
}
在这种情况下,grails.war.resources 闭包不适用于正确构建的 2.5.6 和 2.0.4(Surprise 3)。
grails.dependency.cache.dir 是系统属性,我们在操作系统级别建立它,因此 settings.groovy 文件保持为空。 Wars 为 2.5.6 和 2.0.4 正确生成,但在 Windows 7 中使用 Eclipse Neon 未正确建立 maven 缓存路径。但是,它在带有 Jenkins 的 Linux 中完美运行(Surprise 4)。
我们是如何解决的
为了解决这个问题,我们现在使用一个空的 settings.groovy 文件,并且 2.5.6 应用程序在 buildConfig.groovy 中建立了 maven 缓存路径
【问题讨论】: