编写Ant脚本以从目录输入多个输入并以并行方式运行它们的任何方法

时间:2015-06-05 12:53:27

标签: ant ibm-mobilefirst

我想编写一个脚本,它从目录中获取所有适配器的输入并并行构建适配器。我只想要一个通用脚本,它可以与每个移动的第一个代码一起构建适配器。

<target name="build-adapter">
<dirset id="check" dir="/Users/admin/Documents/workspace1/MyTime/adapters"     includes="*"/>
<property name="test" refid="check"/>
<echo>${test}</echo>
<parallel>
  <adapter-builder
    folder="/Users/admin/Documents/workspace1/MyTime/adapters/${test}"
    destinationfolder="/Users/admin/Documents/workspace1/MyTime/bin"
classpathref="base.path"/>
</parallel>

</target>

我正在抛出以下错误..

  

创建临时目录以构建适配器失败。

3 个答案:

答案 0 :(得分:0)

您可能会收到此错误,因为该任务未找到任何适配器。我认为你无法找到所有适配器。

也许您可以提供适配器/路径列表并使用FOR循环:

答案 1 :(得分:0)

您的代码确实如下:

  1. 将以分号分隔的路径列表添加到${test}
  2. 构建名为${test}/../Adapter1;/../Adapter2
  3. 的单个适配器
  4. 此类适配器不存在,通过创建目录时出现混淆错误消息(related post
  5. 我相信带有parallel="true"旗帜的ant-contrib的for task是你的朋友

    修改 对我有用的Ant任务:

    <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
    <target name="build-adapter">
        <echo>building adapter: ${adapter.path}</echo>
        <basename property="adapter.name" file="${adapter.path}"/>
        <adapter-builder folder="adapters/${adapter.name}" destinationfolder="${build.dir}"/>
    </target>
    
    <target name="build-adapters">
        <foreach param="adapter.path" parallel="true" target="build-adapter">
            <path>
                <dirset dir="adapters" includes="*"/>
            </path>
        </foreach>
    </target>
    

    注意:

    • parallel =“true”不能同时使用,至少用我的ant-contrib-0.6(foreach使用而不是第二个目标创建)

答案 2 :(得分:0)

它得到修复。我使用下面的代码来完成目标。

<target name="build-adapter-parallel">
    <for param="check" parallel="true">
        <path>
        <dirset dir="/Users/admin/Documents/workspace1/MyTime/adapters" includes="*"/>
    </path>      
<sequential>
<echo> value of @{check}</echo>
    <adapter-builder
    folder="@{check}"
    destinationfolder="/Users/admin/Documents/workspace1/MyTime/bin"
     classpathref="base.path"/>
 </sequential>
 </for>
</target>