Over the past few days I've been playing with the build system
trying to
understand exactly how and what Eclipse bundles with a feature when it's
being built.. I think I have a pretty clear understanding of what's
going on now.
Cool.
Things PDE build does/doesn't do:
1) If a plugin is listed as a <plugin> in your feature.xml, it will get
bundled in the final ZIP file automatically (we were including 3rd party
plugins to let eclipse do a lot of the bundling for us)
2) If a plugin is listed as an <import> in your feature.xml, no bundling
will occur
3) If another feature is listed as an <include> in your feature.xml, no
bundling will occur of that feature or it's plugins
Ok - fits my world view too.
Things the old ant task did:
1) Took a list of plugins and added them to an arbitrary zip file.
ok - which is probably needed since i'm not sure that a plugin.xml needs to
list all its transitive dependencies.
The old ant task was pretty annoying as you all probably know it
required a list of plugins in a property file, which had to be
synchronized every time one of our dependencies changed or one of our
plugins changed it's needs. I have replaced the old task with a
java-based task that recursively pulls
requirements from your feature's feature.xml and corresponding plugin
manifests.
nice.
Things the new ant task current does:
1) Takes a name of a feature, and sets a property to a list of plugins
that are not in the standard SDK that that feature depends on. This list
is
pulled from the <import> and <include> tags.
With the new ant task we will be able now to automate bundling by
just
keeping our feature.xml's up to date. I am also thinking about making the
new ant task make the "dependencies" it generates be not just plugins,
but features also. That way our bundle contains not just plugins but
features
(which it probably should have all along). So, in short.. with the new
ant task.. this will be the "new" behavior provided from our build
system:
ok, so just so i understand "make the dependencies it generates...be
features" means
that you copy an existing complete feature as-is, instead of taking
individual parts
or create a new feature, correct?
1) If a plugin is listed as a <plugin>, it gets auto-bundled
just like in
standard PDE build (no change). Anything here will be seen in both
"bundle" and "nodeps" downloads.
+1 (if "bundle" means the type of downloads we provide now for each
plugin? not bundle as in full eclipse SDK + deps + our plugin)
2) If a plugin is listed as an <import>, that plugin and all of
it's
recursive dependencies will be auto-bundled (only for "bundle" downloads)
+1
3) If a feature is listed as an <include>, that feature and all
of it's
plugins (and recursive dependencies) will be auto-bundled (again only in
"bundle" downloads)
+1
Basically, I just want you guys to chime in if this is or isn't
the
expected behavior you think we should have for bundling...
Sounds great.
Would be cool if one could automatically run through
plugin.xml/feature.xml and look for "evil" plugin references.
--
--
Max Rydahl Andersen
callto://max.rydahl.andersen
Hibernate
max(a)hibernate.org
http://hibernate.org
JBoss a division of Red Hat
max.andersen(a)jboss.com