On 11/15/2013 08:32 AM, Andreas
Schilling wrote:
We have an
application with loads of
bundles and features, pretty standard stuff. Setting up tycho
for this
was easy and quick and not much of problems here.
The point now is: we're
developing a
company-internal framework on top of Eclipse RCP which then is
our base
for pretty much all our applications. This framework is from an
SCM point
of view completely separate in its own repository.
We integrate it in our
applications
as a sub-repo which then becomes checked out and built as well
when the
application is built. This might be a bit odd from a artifact
management
point of view (one would probably expect to have final built
arttifacts
somewhere in a p2 repo or the like), but as most projects
contribute to
this base quite often and usually do so first in their own
feature branches
directly during application development (before it then becomes
merged
later on) this worked fine so far.
What you've identified here is indeed a good practice with
Maven/Tycho: make things more modular and made clear your
dependencies between your modules. It makes sense to have a "common"
repo, have modules A, B and C (providing features A, B and C)
depending on the common repo and providing each one a A, B or C p2
repo, and have your "product" repo building against the "common", A,
B and C repo.
In general 1 SCM repo = 1 Maven build = 1 p2 repo.
That target platform
is then (obviously) used for both the application
bundles and the framework. And that's what we failed so far to
reproduce
again: because the POM of the application is not the parent of
the POM
for the framework, the build fails for the framework bundles as
the target
platform is not available to them.
So the pretty broad question
would be
what options there are to solve this in an elegant way.
In the Maven world, the elegant way to share some artifacts (target
platform are artifacts) is to deploy them on a Maven repo. So you'll
need to set up a company-wide Maven repo such as Nexus, where you
can "mvn deploy" your target platform.
All projects (your application and your framework) can now reference
this Maven repo and consume the target-platform artifact, as
described in
http://wiki.eclipse.org/Tycho/Target_Platform#Target_files
Although you're probably aware of most of it, you might find some
tips about TP on this presentation:
http://www.slideshare.net/mickaelistria/a-journey-with-target-platforms
HTH
|