archiva-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré>
Subject Re: using archiva as a p2 repository
Date Wed, 17 Aug 2011 20:09:32 GMT
Hi Johannes,

FYI, we are working on the support of OBR in Archiva.
A POC has started in Karaf Cave, and tomorrow, I will start to work on 
integrating Cave OBR into Archiva.


On 08/17/2011 09:53 PM, Johannes Utzig wrote:
> Hi,
> I don't know if any of you work with OSGi in general and eclipse plugins
> in specific, but both technologies have gained a lot of momentum in
> recent years.
> Now with maven tycho finally available, OSGi, eclipse and maven are
> really starting to grow together more closely.
> Without getting into details, tycho resolves dependencies from both
> maven repositories and p2 repositories and allows you to easily deploy
> your OSGi bundles into a standard maven repository.
> This works great at build time, but as of now, not so great at
> development time. When developing OSGi bundles in eclipse, you typically
> define a 'Target Platform' that contains all your dependencies and
> eclipse uses this to automatically construct the classpath (very similar
> to what m2eclipse does in a typical maven project).
> Most of the time these Target Platform definitions consist of a list of
> remote p2 repositories and eclipse downloads the required bundles
> automatically on demand, again, very similar to the way it works with
> maven/m2eclipse.
> The problem is, eclipse only understands p2 repositories, not maven
> repositories. So if for example you want to compile your projects at
> development time against the OSGi bundles that are available in your
> maven repository (deployed by yourself with maven tycho, or from an
> external source like Spring Enterprise Repository), you simply cannot do
> it.
> First you need to either
> -download all files manually and add them to your target platform
> -or create a p2 repository from all the bundles and put that somewhere
> on a webserver
> None of the alternatives sound great to me. We already have an archiva
> running that contains all the bundles we need, so I'd rather not
> duplicate all the jars and put them somewhere else.
> So I had the idea of using the archiva consumer API to crawl an archiva
> repository and create the p2 repository files (artifacts.jar and
> content.jar) on-the-fly. Sort of like a p2 view on a maven repository.
> To my understanding Nexus Professional offers such a feature, but there
> is no open source equivalent to this.
> Over the last few days I was working on this idea a little and actually
> have a working prototype now.
> Whenever a new artifact gets deployed in archiva, the bundle manifest
> (or eclipse feature.xml) is parsed and the information is appended to
> the content.jar and artifacts.jar that I create in the root folder of
> the archiva repository. That way you can use the archiva repository as a
> regular p2 repository/eclipse update site and install everything that's
> either an OSGi bundle, or an eclipse feature into your host eclipse or
> your target platform.
> Sorry for the long background story, but now finally to my questions.
> I'd greatly appreciate if somebody could help me out with these:
> 1. I think this would be a very helpful feature for users of tycho and
> archiva and I'd like to make this (once finished) available as open
> source. I was wondering if this is something you'd be interested in
> hosting directly as an apache archiva component
> 2. I could not find a way in the consumer API to determine if the
> 'Process All Artifacts' checkbox in 'admin/repositories.action' was
> activated before the scan got triggered. A full scan is the perfect time
> to throw away the old artifacts.jar and content.jar, but if the checkbox
> is not activated, I end up with an incomplete repository. At the moment
> I have overridden isProcessUnmodified() and return true. That works, but
> is unfortunately very very expensive for this kind of consumer if the
> repository is reasonably large.
> 3. I also could not find a way to get an event when a file is deleted.
> How can a consumer find out when an artifact gets deleted? Especially
> with snapshots being always unique since maven 3, the p2 files will
> quickly explode when old snapshot entries don't get deleted regulary...
> Thanks and best regards,
> Johannes Utzig

Jean-Baptiste Onofré
Talend -

View raw message