如何从.jar文件中提取.class文件?

时间:2011-02-28 16:14:10

标签: ant

一个简单的问题:我喜欢Ant的这一点:

<fileset dir="${lib}">  
   <patternset refid="myPattern" />  
</fileset>

所以我可以使用它,例如从$ {lib}中复制一些与myPattern匹配的.jar文件。

如果我真正想要的是查看$ {lib}中的每个.jar并选择只匹配myPattern的.class文件,该怎么办?

4 个答案:

答案 0 :(得分:10)

unjar任务在开箱即用中完成了您想要的任务。使用fileset指定要从中提取的jar文件,使用patternset指定要提取的文件。

<unjar dest="${dest.dir}">
  <patternset refid="myPattern" />
  <fileset dir="${lib}" includes="*.jar" />
</unjar>

答案 1 :(得分:1)

您可以使用archives资源集合从多个档案中提取多个文件:

<copy todir="somedir">
    <restrict>
        <!-- This is just an example, you can use any restriction -->
        <name name="somePattern"/> 
            <archives>
                <zips>
                    <fileset dir="${lib}" includes="**/*.jar" />
                </zips>
        </archives>
    </restrict>
</copy>

答案 2 :(得分:0)

我很确定你需要解开jar,然后复制类文件。

答案 3 :(得分:0)

这应该适用于antcontrib的For task

<for param="file">
  <path>
    <fileset dir="${lib}" includes="*.jar"/>
  </path>
  <sequential>
    <unjar src="@{file}" dest="${dest}">
      <patternset refid="myPattern>
    </unjar>
  </sequential>
</for>
相关问题