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

dst*_*arh 0 ant grails

试图创建一个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>
Run Code Online (Sandbox Code Playgroud)

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

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

Bur*_*ith 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>
Run Code Online (Sandbox Code Playgroud)

您可以执行简单的命令:

<grails action='clean' />
Run Code Online (Sandbox Code Playgroud)

或者像你的战争任务那样复杂的:

<grails action='war' environment='${env}'>
   <args>
      <arg value="${war.filename}" />
   </args>
</grails>
Run Code Online (Sandbox Code Playgroud)