A quick question: I like the look of this bit of Ant:
<fileset dir="${lib}">
<patternset refid="myPattern" />
</fileset>
So I could use this e.g. to copy a few .jar files from ${lib} that match myPattern.
What if what I really want is to look into each .jar in ${lib} and select only .class files that match myPattern?
The unjar
task does pretty much what you want here out of the box. Use a fileset
to specify the jar files you want to extract from, and a patternset
to specify which files to extract.
<unjar dest="${dest.dir}">
<patternset refid="myPattern" />
<fileset dir="${lib}" includes="*.jar" />
</unjar>
You can use the archives
resource collection to extract several files from multiple 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>
I'm pretty sure you'd need to unjar the jars and then do the copy of class files.
This should work with antcontrib's For task
<for param="file">
<path>
<fileset dir="${lib}" includes="*.jar"/>
</path>
<sequential>
<unjar src="@{file}" dest="${dest}">
<patternset refid="myPattern>
</unjar>
</sequential>
</for>