2011-02-28 65 views
5

一个简单的问题:我喜欢这一点蚂蚁的外观:如何从.jar文件中提取.class文件?

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

所以,我可以用这个例如从$ {lib}复制匹配myPattern的几个.jar文件。

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

回答

9

unjar任务工作时几乎你想在这里开箱即用的东西。使用fileset指定要从中提取的jar文件,使用patternset指定要提取的文件。

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

我敢肯定,你需要打开罐子,然后做类文件的副本。

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> 
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>