Ant:如何使用具有相同源和目标文件的apply任务

时间:2012-07-06 23:59:52

标签: ant

我正在尝试使用以下命令运行应用任务:

  jpegtran.exe -copy none -optimize -perfect ./images/file.jpg ./images/file.jpg

我想以递归方式应用于所有图像。我尝试过以下的ant代码,但jpegtran说无效的参数。

<target name="optimize.images.jpg">
    <apply executable="jpegtran.exe" dir="${SRC_DIR}/public/assets/" parallel="false" verbose="true" resolveexecutable="true" force="true" vmlauncher="true">
        <arg value="-copy none"/>
        <arg value="-optimize"/>
        <arg value="-perfect"/>
        <srcfile/>
        <targetfile/>
        <fileset dir="${SRC_DIR}/public/assets/images" casesensitive="yes">
            <include name="**/*.jpg"/>
        </fileset>
        <mapper type="identity"/>
    </apply>
</target>

我的蚂蚁代码有什么问题?

1 个答案:

答案 0 :(得分:-1)

需要更改的一个项目是<arg>的嵌套-copy none元素。由于参数中有空格,因此请使用line属性而不是value。请参阅Apache Ant command line arguments

<target name="optimize.images.jpg">
  <apply executable="jpegtran.exe" dir="${SRC_DIR}/public/assets/" 
    parallel="false" verbose="true" resolveexecutable="true" force="true" 
    vmlauncher="true">

    <arg line="-copy none"/>
    <arg value="-optimize"/>
    <arg value="-perfect"/>
    <srcfile/>
    <targetfile/>
    <fileset dir="${SRC_DIR}/public/assets/images" casesensitive="yes">
      <include name="**/*.jpg"/>
    </fileset>
    <mapper type="identity"/>
  </apply>
</target>