Potentially, yes... that would make building the jar a longer operation
(several updates, not one pass), but would ensure that the newest thing was
in place at the end of the first cycle, which is what we want.

But I think ant-contrib's <foreach>, operates on <path>s, which I think
precludes exclusion (e.g. of **/*.properties, which we do from src because
they've been filtered into bin).  So we'd probably still end up writing some
custom Ant task code...



On Wed, Jun 3, 2009 at 2:21 PM, Isaac Truett <[email protected]> wrote:

>
> Could you build the jar incrementally using <uptodate> to update with
> newer/missing files from each source directory?
>
>
> On Wed, Jun 3, 2009 at 2:13 PM, Freeland Abbott <[email protected]>
> wrote:
> > Well, I did try to use filesonly first. ;-)
> >
> > Taking the worst-case example of the "com/" directory entry from a
> > hypothetical amalgam of user/build.xml and dev/common.xml's jars, we
> might
> > have up five instances of the "com/" directory being added to a jar (that
> > is, sources from src and super, built classes from core and platform, and
> > entries from tools jars---maybe lots of those, but they're all old and
> all
> > the same type, so I'll lump them together).  With
> > duplicate=add|preserve|fail, we can make either the first or last one
> win,
> > but we want the "newest" one to win.
> >
> > We could, instead of this tack, write our own task, perhaps extending
> ant's
> > JarTask, and do the "most recent" filtering there.  That seemed heavier
> than
> > we needed, and the <zipfileset>s an irritating twist to handle, but it
> > certainly lets us set the control directly the way we want it, i.e. by
> date
> > instead of lexical order.
> >
> >
> >
> > On Wed, Jun 3, 2009 at 1:41 PM, Scott Blum <[email protected]> wrote:
> >>
> >> It begins to feel as though we're on the wrong track. :(  All we're
> really
> >> trying to solve is jarring things up in a particular order.  But in the
> >> process, we're defining tags like "sourcefiles" and "artifacts" that
> seem
> >> imbued with meaning.  All all this (really) just to solve the issue of
> >> adding directory entries.  I'm ok with proceeding down this path if
> there
> >> really isn't any more straightfoward way to solve this, but I think
> we're at
> >> a point where it's worth taking a second look high-level.
> >>
> >> On Wed, Jun 3, 2009 at 1:31 PM, <[email protected]> wrote:
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1008
> >>> File common.ant.xml (right):
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1008#newcode149
> >>> Line 149: <element name="manifestcontents" optional="true"/>
> >>> On 2009/06/03 05:06:18, scottb wrote:
> >>>>
> >>>> Does it not work to just call this "manifest"?
> >>>
> >>> Nope, or at least not that I could find.  (That was my first attempt,
> >>> actually.)  If the macrodef has an element named "manifest," then in
> the
> >>> macro <manifest> means  the contents of that user-supplied element (but
> >>> not the user-supplied element itself, sadly).  And if I use an implicit
> >>> element (e.g. "jarelements", such that <manifest> is implicitly a child
> >>> of that), I'm only allowed one element total and can't separate
> >>> sourcefiles and artifacts, which is the whole point.
> >>>
> >>> What we could do, though, is to use e.g. "jarelements" as the macrodef
> >>> element, and have callers put the jar <manifest> sub-element in that.
> >>> So callers would do:
> >>>
> >>>  <gwt.jar>
> >>>     <artifacts>...</artifacts>
> >>>     <sourcefiles>...</sourcefiles>
> >>>     <jarelements>
> >>>        <manifest>...</manifest>
> >>>     </jarelements>
> >>>   </gwt.jar>
> >>>
> >>> which would allow, not just <manifest>, but also <metainf>,
> <indexjars>,
> >>> <service>... and <fileset>, which makes me nervous, but would at least
> >>> have well-defined ordering behind <artifacts/> and <sourcefiles/>.
> >>> Would that be better?
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1011
> >>> File dev/core/build.xml (right):
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1011#newcode27
> >>> Line 27: <sourcefiles>
> >>> On 2009/06/03 05:06:18, scottb wrote:
> >>>>
> >>>> <artifacts> seems to make more sense here
> >>>
> >>> Somewhat arbitrary choice, yes, but we want that "artifacts" must be
> >>> definitively newer than "sourcefiles."  Since the jars here will have
> >>> dates as set by svn, and the contents as baked-in to the download files
> >>> (as opposed to dates set by ant compilation), I called them
> sourcefiles.
> >>>
> >>> But we don't have anything that we build ourselves here, so it doesn't
> >>> in the end matter.
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1016
> >>> File user/build.xml (right):
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837/diff/10/1016#newcode82
> >>> Line 82: <zipfileset src="${gwt.tools.lib}/tomcat/servlet-api-2.5.jar"
> >>> />
> >>> On 2009/06/03 05:06:18, scottb wrote:
> >>>>
> >>>> Seems like this line and the next two should <artifacts>... does it
> >>>
> >>> make a
> >>>>
> >>>> difference, or is my intuition wildly wrong?
> >>>
> >>> Your intuition is mildly wrong.  The point of <artifact> is to hint
> >>> about what's going to have the newest touch dates, i.e. what's
> generated
> >>> by ant rather than touched from svn.
> >>>
> >>> Given that these contain org/... classes, the practical impact is
> small,
> >>> but if they were com/... classes, the jars presumably would have
> >>> older-than-now dates on the com/ entry (indeed, it's May 2008 for
> >>> flute's org/ entry), so making them artifacts could cause spurious
> >>> rebuild activity to freshen the directory entries.
> >>>
> >>> http://gwt-code-reviews.appspot.com/33837
> >>
> >
> >
> > >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to