grails ant任务,设置不同的环境

时间:2010-08-31 20:23:19

标签: grails ant

尝试创建一个grails ant任务,除了战争任务的prod之外还有其他环境。

我试过

<target name="war" depends="-init-grails" description="--> Creates a WAR of a Grails application">
        <grails script="War" args="grails.env=${env} ${war.filename}"/>
</target>

<target name="war" depends="-init-grails" description="--> Creates a WAR of a Grails application">
        <grails script="War" args="-Dgrails.env=${env} ${war.filename}"/>
</target>

这两者都不起作用,总是只运行生产环境。请注意,我还硬编码$ {env}所以它不是缺少它

3 个答案:

答案 0 :(得分:6)

我为此使用了一个macrodef:

<property environment='env'/>

<property name='grails.home' value='${env.GRAILS_HOME}' />

<condition property='grails' value='grails.bat'>
   <os family='windows'/>
</condition>
<property name='grails' value='grails' />

<macrodef name='grails'>
   <attribute name='action' />
   <attribute name='environment' default='dev' />
   <element name='preargs' optional='true' />
   <element name='args' optional='true' />
   <sequential>
      <exec executable='${grails}' failonerror='true'>
         <preargs />
         <arg value='@{environment}'/>
         <arg value='@{action}'/>
         <args />
      </exec>
   </sequential>
</macrodef>

您可以执行简单的命令:

<grails action='clean' />

或更复杂的战争任务:

<grails action='war' environment='${env}'>
   <args>
      <arg value="${war.filename}" />
   </args>
</grails>

答案 1 :(得分:1)

你可能想看看grails脚本来解决你的问题

http://www.grails.org/Command+Line+Scripting

它包装了ANT,因此您可以在脚本中使用ant任务,我相信您可以访问环境和许多其他“常规”内容

我认为如果你开始使用ant,你也可以这样做,虽然我没有用grails脚本尝试过它

<exec executable="grails"  failonerror="true">
    <arg line='-c war grails.env=${env} ${war.filename}' />
</exec>

答案 2 :(得分:0)

如果你进入项目目录并运行“grails --integrate-with -ant”,它将创建一个build.xml,它将自动使用常春藤来下载依赖项和grails,并为你创建宏def。 / p>

您可以使用build.xml作为项目的起点