使用<;从另一个目标调用ant目标;groovy>;
我有以下脚本:使用<;从另一个目标调用ant目标;groovy>;,ant,groovy,Ant,Groovy,我有以下脚本: <target name="query"> <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="libraries"/> <groovy> import groovy.sql.Sql def sql = Sql.newInstance("jdbc:oracle:thin:@mydomain.com:15
<target name="query">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="libraries"/>
<groovy>
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:oracle:thin:@mydomain.com:1521:alias", "test", "test", "oracle.jdbc.pool.OracleDataSource")
List productNames = sql.rows("SELECT name from PRODUCT")
//println(productNames.count)
productNames.each {
println it["name"]
// HOW TO INVOKE ANT TARGET TASK HERE? TARGET TASK WILL USE it["name"] VALUE
}
properties."productNames" = productNames
</groovy>
</target>
<target name="result" depends="query">
<echo message="Row count: ${productNames}"/>
</target>
导入groovy.sql.sql
def sql=sql.newInstance(“jdbc:oracle:thin:@mydomain.com:1521:alias”、“test”、“test”、“oracle.jdbc.pool.OracleDataSource”)
列表productNames=sql.rows(“从产品中选择名称”)
//println(productNames.count)
productNames.each{
println it[“name”]
//如何在此处调用ANT目标任务?目标任务将使用它的[“name”]值
}
属性。“productNames”=productNames
我想从“查询”目标调用另一个ant目标。特别是在productNames循环内部,如上面的“输入注释”
你知道怎么做吗?在
范围()中有一些绑定对象,更具体地说是ant
对象,它是AntBuilder
()的一个实例,通过这个对象,你可以调用getProject()
方法获取此项目的实例
您可以使用executeTargetGet(java.lang.String targetName)
方法执行传递其名称的不同目标。所有这些看起来像:ant.getProject().executeTargetGet(“yourTargetName”)
在代码中:
<target name="query">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="libraries"/>
<groovy>
import groovy.sql.Sql
def sql = Sql.newInstance("jdbc:oracle:thin:@mydomain.com:1521:alias", "test", "test", "oracle.jdbc.pool.OracleDataSource")
List productNames = sql.rows("SELECT name from PRODUCT")
//println(productNames.count)
productNames.each {
println it["name"]
ant.getProject().executeTarget("yourTargetName")
}
properties."productNames" = productNames
</groovy>
</target>
因此,您必须使用ant
task。例如,如果在build.xml
中有follow ant目标和一个参数:
<target name="targetTest">
<echo message="param1=${param1}"/>
</target>
希望这有帮助,谢谢你的提示。您知道如何将参数添加到executeTarget方法中的“yourTargetName”任务中吗?我看不到任何其他参数。我将更新我的答案以满足您的新需求
:)
<target name="targetTest">
<echo message="param1=${param1}"/>
</target>
<target name="targetSample">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="groovyLibs"/>
<groovy>
ant.ant(antfile:'build.xml'){ // you antfile name
target(name:'targetTest') // your targetName
property(name:'param1',value:'theParamValue') // your params name and values
}
<groovy>
</target>
targetTest:
[echo] param1=theParamValue
BUILD SUCCESSFUL
Total time: 0 seconds