I am involved in a project where I think the build system is a huge mess.
Here is the situation:
We have a build that treats everything as eclipse plugins. I guess
someone knew how to do a PDE eclipse plugin build and decided that
everything should be done this way. So we are using PDE for
everything. It's a build I don't understand very well as it's 1000s
of lines of xml spread out across many build.xmls.
JUnits are run by launching junits via eclipse. Apparently the
thinking is that OSGi JUnits need the runtime to execute in. Or
something. There is a truly heinous ant script to launch the eclipse
sdk/osgi start process. never seen anything like it (tons of macrodef
ant tasks)....
The build repo is "p2" which I gather is an eclipse centric plugin repository.
The OSGI runtime is a wrapped up Equinox.
Eclipse projects are checked into source. The OSGi targets (for
running the OSGi container in eclipse) are checked in as well. This
is a huge problem for me as when bundles are updated the projects and
targets typically don't compile/execute correctly. And it's a manual
hack-fest to pull in the right bundles and get the projects compiling.
Result of the current design:
So what's happening is the build takes forever (40 mins on my box).
The build is broken probably 80% of the time. It's very hard to
understand. The eclipse project config settings are almost always out
of sync with the current bundles. JUnits have to be executed inside
OSGi. There is no way to execute individual JUnits in the build.
To add new dependencies we manually edit the bundle manifest (eclipse
wizard). Then we check in the manifest. Then we tell the build
engineer what we want. He modifies the build somehow to pull in the
correct bundles. And usually the build breaks for quite a while....
adding dependencies is very painful.
I know I'm throwing a lot of stuff out there..... I want to try and
prototype something in gradle for this to show a better approach.
this boils down to a few questions.
1) what are best practices for running OSGi JUnits?
2) what are best practices for how to deal with the manifest file? I
see the gradle OSGi plugin generates the manifest file - which seems
to be a better approach to me. But in this case what about your IDE?
How is the IDE going to know dependencies before you build your
manifest via the build?
3) what are best practices for setting up the eclipse projects/targets
from the build? I am not sure what all is stored in eclipse projects
(I am more of an IntelliJ IDEA guy but was forced to use eclipse by
this project setup). Seems like having the build generate the eclipse
target and runtime configuration is better (and I'm aware of the
eclipse project plugin for gradle).
4) what is the best place to ask OSGi questions? I've searched for
forums and haven't really found anything useful.
Thanks for any thoughts/suggestions.
phil
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email