Thank you for your reply. Yes, I can use unzip task to do the similar things, but my improved zipfileset is more convenient and faster than simply unzip, copy and re-pack approaches.
I usually need to merge some WAR files into one big WAR -- to save memories, resources of app-server, and each war represents a sub-dir of the big WAR. But we need to keep the WEB-INF and META-INF dirs top level. Of course we can unzip all WARs and re-pack them into new one, but it's much faster to use this new zipfileset to generate it all at once. Hopefully it is useful to other people. > Why bother to go through all that when you can just unzip the file in your > copy case? > > ____________________________________________________________________________________________ > > > Jeffrey E. (Jeff) Care > [EMAIL PROTECTED] > IBM WebSphere Application Server > Systems Management Tools Architecture & Development > > > > > > Michael Zhou <[EMAIL PROTECTED]> wrote on 08/08/2007 04:38:31 AM: > > > I used to build a jar file (or any zip-format file: war, ear, etc.), > > which contents are extracted from other zip files. For instance, > > zip file src.zip contains: > > > > +---main > > | \---org > > | \---apache > > | Test.java > > | > > \---test > > > > I just want the subtree under "main" (not include main directory) to be > > packed into my jar file: > > > > +---org > > \---apache > > Test.java > > > > So I wrote a build.xml to do this: > > > > <project default="src-jar"> > > <target name="src-jar"> > > <jar destfile="my-src.jar"> > > <zipfileset src="src.zip" includes="main/"/> > > </jar> > > </target> > > </project> > > > > But the result is not as expected: > > > > +---main // I don't want this directory here > > \---org > > \---apache > > Test.java > > > > In order to take off the "main" directory, I modified some Ant classes. > > Attachment is the patch file from Ant 1.7.0 source. > > > > Usage: > > > > <project default="src-jar"> > > <target name="src-jar"> > > <jar destfile="my-src.jar"> > > <!-- basedir instead of includes --> > > <zipfileset src="src.zip" basedir="main/"/> > > </jar> > > </target> > > </project> > > > > This is not the best solution I think. Because it doesn't support tasks > > other than "zip", "jar", "war". For example, the following build script > > won't work: > > > > <project default="copy-src"> > > <target name="copy-src"> > > <copy destfile="srcdir"> > > <zipfileset src="src.zip" basedir="main/"/> > > </copy> > > </target> > > </project> > > > > I suggest to improve class org.apache.tools.zip.ZipFile to support new > zip > > file format like "src.zip!/main". By this way, any tasks use zipfileset > > do not need to be changed. > > > > For example, > > > > <project default="copy-src"> > > <target name="copy-src"> > > <copy destfile="srcdir"> > > <zipfileset src="src.zip!/main" includes="**/*.java"/> > > </copy> > > </target> > > </project> > > > > Michael Zhou <[EMAIL PROTECTED]> > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > -- Michael Zhou <[EMAIL PROTECTED]> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]