使用Grails打包war文件时加载不同的样式表

时间:2014-09-29 21:13:16

标签: maven grails build-process war

我想为不同品牌打包Grails应用程序。在生成war文件时,我想传递一些引用某个品牌的自定义参数,并通过加载该品牌的样式表来设置应用程序的样式。

我在线阅读,我发现的一种方法是使用maven。我尝试使用maven,但我在最初编译应用程序时遇到困难。错误是

Failed to execute goal org.grails:grails-maven-plugin:2.2.1:maven-compile 
(default-maven-compile) on project foreAction: Forked Grails VM exited with error. 

我对现在采取的方法感到困惑。我搜索了上述错误并尝试了不同的解决方案,但似乎没有任何效果。

如果不使用Maven有不同的方法,我愿意试一试。

1 个答案:

答案 0 :(得分:1)

您可以随时使用scripts/_Events.groovy挂钩事件并替换适当的CSS /资产。 documentation解释了如何挂钩构建事件。

scripts/_Events.groovy中的代码可能如下所示:

// This is called after the staging dir is prepared but before the war is packaged.
eventCreateWarStart = { name, stagingDir ->
  // place your code here that copies your resources to the appropriate location in the staging directory.
  Ant.copy(
    file: System.getProperty('somePassedInFile'), 
    toFile: "${stagingDir}/assets/stylesheets/whatever.css", 
    overwrite: true
  )    

}

然后你可以从grails prod war传递源文件的值,如下所示:

grails prod war -DsomePassedInFile=/path/to/file.css

希望这有助于至少让您了解如何实现这一目标。 (所有都写在我的头顶,所以要小心错别字等。)