【问题标题】:ANT unzip every jar except oneANT 解压除一个以外的所有 jar
【发布时间】:2018-06-24 08:38:24
【问题描述】:

我有一个 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 的“排除名称”似乎不起作用,因为我相信它不认为它是一个目录,因为它是一个 jar

【问题讨论】:

    标签: java jar ant


    【解决方案1】:

    如您所见here,它非常简单。

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

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

    【讨论】:

    • 投票赞成避免 ant-contrib 并在一个 unzip 任务中完成所有工作。
    【解决方案2】:

    您可以使用 if 任务 (http://ant-contrib.sourceforge.net/tasks/tasks/if.html) 过滤掉 Neo.jar 文件。例如

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

    【讨论】:

    • 错误,“equals 不支持嵌套的“then”元素。”
    • 搞砸了我的问题,编辑了我的问题以使用“@”而不是“$”作为 jar,也许这会改变一些东西?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 2012-10-25
    • 2019-08-11
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多