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]

Reply via email to