Java ANT解压每个罐子,除了一个

Java ANT解压每个罐子,除了一个,java,jar,ant,Java,Jar,Ant,我有一个ANT目标,它用一个“for”任务解压每个jar,但我想排除一个名为Neo.jar的特定jar。这是我到目前为止所拥有的,但它正在解压它可以使用的每一个罐子 <target name="unzipjars"> <for param="jar"> <sequential> <unzip dest="${expanded.dirs}" src="@{jar}"> <exclude name

我有一个ANT目标,它用一个“for”任务解压每个jar,但我想排除一个名为Neo.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的“exclude name”似乎不起作用,因为我相信它不认为它是一个目录,因为它是一个jar

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

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

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

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

正如您所见,这很简单

您只需将标记
patternset
添加到配置中(顺便说一下,您不需要迭代…)。像这样:

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

正如您所见,这很简单

您只需将标记
patternset
添加到配置中(顺便说一下,您不需要迭代…)。像这样:

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


error,“equals不支持嵌套的“then”元素。搞乱了我的问题,将我的问题编辑为使用“@”而不是“$”表示jar,这可能会改变什么?error,“equals不支持嵌套的“then”元素。搞乱了我的问题,将我的问题编辑为使用“@”而不是“$”表示jar,也许这改变了什么?投票赞成避免ant contrib并在一个
unzip
任务中完成所有操作。投票赞成避免ant contrib并在一个
unzip
任务中完成所有操作。