除了

时间:2018-01-15 17:07:18

标签: java jar ant

我有一个ANT目标,用“for”任务解压每个jar,但我想要排除一个名为Neo.jar的特定jar。这是我到目前为止所拥有的,但它解压缩了每一个可用的jar。

 <target name="unzipjars">
   <for param="jar">
     <sequential>
       <unzip dest="${expanded.dirs}" src="@{jar}">
         <exclude name="Neo.jar/**"/>
       </unzip>
     </sequential>
   </for>
 </target>   

我正在试图从“for param =”jar“”中排除某些东西,但我不认为这样的东西存在。 Neo.jar的“排除名称”似乎不起作用,因为我认为它不认为它是一个目录,因为它是一个罐子

2 个答案:

答案 0 :(得分:1)

您可以使用if任务(this)过滤掉Neo.jar文件。例如

<for param="jar">
  <sequential>
    <if>
      <not><equals arg1="@{jar}" arg2="Neo.jar" /></not>
      <then><!-- unzip the jar --></then>
    </if>
  </sequential>
</for>

答案 1 :(得分:1)

正如您所见here,它非常容易。

您只需要将标记patternset添加到您的配置中(并且您不需要按顺序进行迭代......)。像这样:

<target name="unzipjars">
    <unzip dest="${expanded.dirs}">
        <patternset>
            <exclude name="**/Neo.jar"/>
        </patternset>
        <fileset dir="${jar}">
            <include name="**/*.*"/>
        </fileset>
    </unzip>
</target>