【问题标题】:Side effects of establishing maven cache path for Grails 2.5.6 applications为 Grails 2.5.6 应用程序建立 maven 缓存路径的副作用
【发布时间】: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 缓存路径

【问题讨论】:

    标签: grails maven-3


    【解决方案1】:

    问题在于 buildConfig.groovy 文件中的 grails.war.resources 闭包错误地嵌套在 grails.project.dependency.resolution 闭包中。这虽然不正确,但似乎适用于其他 Grails 版本,例如 1.3.7 和 2.0.4。但是,在 2.5.6 版本中嵌套时,闭包不再可访问。一旦取消嵌套,它就可以正常工作,并且按预期过滤战争资源

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多