Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用<;从另一个目标调用ant目标;groovy>;_Ant_Groovy - Fatal编程技术网

使用<;从另一个目标调用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