试图创建一个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}所以它不是缺少它
我为此使用了一个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)