尝试创建一个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}所以它不是缺少它
答案 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作为项目的起点