Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[pde-build-dev] PDE Build and RCP - my observations

Hi,

I've been using PDE Build for quite some time now to build a fairly
large RCP application and for the most part it works fine.
There are a few issues I have with the build for large RCP
applications and I'm not really quite sure where to address these
issues so I'll just post them here. This will probably look like a bit
of a rant, I'm just offering my opinions and observations of the build
system. Hopefully it will at least create some discussion on the
subject.

First of all, when building RCP applications how do you guys resolve
the Eclipse dependencies for RCP applications? The PDE Build compiles
and packages features just fine but it doesn't tell you what
org.eclipse.* plugins your application uses/needs.
What I have done is create my own Ant task that examines a .product
file for dependencies and copies them over from the eclipse
installation. It works for me, what do you guys do?
It does mean that the .product file must be maintained by the build engineer.

Which brings me to another point. There are a lot of files that must
be maintained regularly by a build engineer. Our application is made
up of several features. This means that each feature has its own map
file, customTargets.xml and build.properties files as well as the
feature.xml file that must also be maintained.
For me this means that each time I do a build I've got to make sure
that all the correct plug-ins are in their relevant feature.xml files,
make sure that all those plug-ins have a corresponding listing in
their relevant map files and make sure that I've added the feature to
the .product file and made sure that all the required plug-ins have
been added to the list. There's a fair bit of room for error here,
especially if a developer has been lazy (hardly!) and forgotten to
tell me that there are new plug-ins that should be included in the
build!

Again there are problems when a plug-in has become obsolete and must
be removed from the build, or when a plug-in is refactored and
references must be updated in the map, feature.xml and .product files.

Some of the time I have experienced compile errors that don't show up
in the Eclipse workbench. This is usually due to developers listing
dependencies in the Build Path instead of in the plug-in manifest but
every so often it's to do with the ordering of the plug-in
dependencies in some plug-ins' manifest files. If I shift some
plug-ins up or down then I don't get errors.

I know testing isn't really part of the PDE Build but I think some of
the issues are related. For each feature I build I also create a
related *-test feature. This has worked fairly well for me for now. I
don't run tests in the postBuild target of the customTargets.xml file
because I use the Eclipse Testing Framework. I copy the built
application into the ETF and execute them at the end of the build. I
have also found that things like obfuscation, code coverage and
metrics are very difficult to integrate into the build.

Would I be correct in saying that for a large project you would
probably need a dedicated build engineer to keep it all in check?
Making sure that developers are telling you about which plug-ins
should be in which feature, making sure they're writing their test
plug-ins correctly. Making sure that the map files are in synch with
the feature.xml files.

It seems to me that there is a lot of room for error in this system.
What are your thoughts on these issues? Am I making a mountain out of
a molehill? Is it just the job of a build engineer to do all of this?
Have I just been making a lot of mistakes along the way?

Peter


Back to the top