I'm +1 for option 1

> Date: Wed, 10 Mar 2010 16:18:20 +0000
> Subject: Re: Aries release - the shape of repo org/apache/aries
> From: [email protected]
> To: [email protected]
> 
> I agree, option 1 is best.
> 
> Alasdair
> 
> On 10 March 2010 14:45, Lin Sun <[email protected]> wrote:
> > I'd vote for option no. 1 below, as there is nothing wrong with it and
> > this is what we currently have.   It is also the format used by many
> > felix jars in maven central and many osgi jars in osgi alliance repo.
> >
> > No. 2 looked wrong to me, and I certainly don't know how to set up that 
> > format.
> >
> > Lin
> >
> > On Wed, Mar 10, 2010 at 6:07 AM, Jeremy Hughes <[email protected]> wrote:
> >> On 9 March 2010 23:21, David Jencks <[email protected]> wrote:
> >>>
> >>> On Mar 9, 2010, at 12:56 PM, Alasdair Nottingham wrote:
> >>>
> >>>> I don't think it is fair to claim it is maven or eclipse winning.
> >>>> Eclipse is not the only group that use this convention. It is also
> >>>> used by felix, and I have been using the convention since I first
> >>>> worked on OSGi 5 years ago. It is pretty common.
> >>>>
> >>>> It is good practice because it makes it quick and easy to identify the
> >>>> identity of the bundle from the jar name, in a structure where you
> >>>> have multiple bundles in a directory it ensures you do not end up
> >>>> replacing one bundle with another which could happen if the jar name
> >>>> is not unique enough.
> >>>>
> >>>> It is my understanding that it is good practice to have the artifact
> >>>> id in maven unique in any case so people who gather jars together in
> >>>> assemblies do not end up replacing jars by mistake. That is what this
> >>>> achieves.
> >>>>
> >>>
> >>> So to be a little more verbose about what I meant....
> >>>
> >>> Maven has the idea that if you have a few million jars, you might not want
> >>> them all in the same directory.    So it has a coordinate system that 
> >>> makes
> >>> it easy for an organization to have short jar names and assure everyone 
> >>> that
> >>> it's artifacts can be distinguished from everyone elses, by using the
> >>> groupId but not necessarily requiring unique artifact ids.
> >>>
> >>> Other systems, AFAIK including eclipse, have the idea that you only have a
> >>> few jars, maybe 1000, and putting them all in the same directory is fine. 
> >>> In
> >>> this situation you need to assure the jar name is unique, and the usual
> >>> method seems to be to form something resembling
> >>> <groupId>.<aritifactId>-<version>.jar from a minimal artifactId.  In order
> >>> to get maven to name the jars in this style, you need to include the 
> >>> groupId
> >>> as a prefix in the artifactId, which is obviously redundant for maven.
> >>>
> >>> My personal opinion is that the non-maven approach is pretty ridiculous, 
> >>> but
> >>> this seems to be a rather unpopular opinion in the osgi world at this 
> >>> time.
> >>>
> >>> For the "assembly" scenario you mention, I'd just include a
> >>> mini-maven-repository with the desired jars, thus preventing any possible
> >>> confusion about what a jar is, even with non-unique artifactIds.
> >>>
> >>
> >> If we take the starting point of the bundle jars being called <bundle
> >> symbolic name>-<version>.jar then what are the possible groupId /
> >> artifactId schemes? Then once we have that we can choose the best one.
> >>
> >> 1. "BSN artifactId"
> >> The artifactId is the string used for the BSN (Bundle Symbolic Name).
> >> It would seem sensible, although not mandatory, for groupId to be an
> >> appropriate first part of the artifactId string. This is what we
> >> largely have today, and what Felix does - e.g. groupId:
> >> org.apache.felix artifactId: org.apache.felix.bundlerepository. This
> >> requires the Bundle Symbolic Name (BSN) to be explicitly set to
> >> ${artifactId} in the maven-bundle-plugin config in the pom because the
> >> maven-bundle-plugin defaults to something else [1].
> >>
> >> So in the maven repo we have artifacts with paths like this:
> >>
> >> ./org/apache/aries/blueprint/org.apache.aries.blueprint/0.1-incubating-SNAPSHOT/org.apache.aries.blueprint-0.1-incubating-SNAPSHOT.jar
> >> (groupId = org.apache.aries.blueprint, artifactId = 
> >> org.apache.aries.blueprint)
> >> ./org/apache/aries/blueprint/org.apache.aries.blueprint.api/0.1-incubating-SNAPSHOT/org.apache.aries.blueprint.api-0.1-incubating-SNAPSHOT.jar
> >> (groupId = org.apache.aries.blueprint, artifactId =
> >> org.apache.aries.blueprint.api)
> >>
> >> 2. "Minimal artifactId"
> >> In this scheme, the artifactId string doesn't overlap with groupId.
> >> The benefit of this would be less duplication in the path in the maven
> >> repo. We would have artifacts with paths like this:
> >>
> >> ./org/apache/aries/blueprint/0.1-incubating-SNAPSHOT/org.apache.aries.blueprint-0.1-incubating-SNAPSHOT.jar
> >> (groupId = org.apache.aries, artifactId = blueprint)
> >> ./org/apache/aries/blueprint/api/0.1-incubating-SNAPSHOT/org.apache.aries.blueprint.api-0.1-incubating-SNAPSHOT.jar
> >> (groupId = org.apache.aries.blueprint, artifactId = api)
> >>
> >> (btw: I struggled a bit with the naming of the groupId and artifactId
> >> here to cope with the fact that we're having an 'uber' bundle and
> >> separate 'api' bundle)
> >>
> >> But, this would require a way of renaming the jar artifact from
> >> <artifactId>-<version>.jar to be the effective BSN that either the
> >> maven-bundle-plugin creates by default [1] or the BSN that is
> >> explicitly configured in the maven-bundle-plugin config elements. It
> >> may be possible to do this (I suspect it'll need some coding rather
> >> than just some config of available plugins). But even if this were
> >> done, do we really want our artifacts to *not* start with the
> >> artifactId? Several times on this list, that has been described as a
> >> bad thing
> >>
> >> For now I don't see any other options. Do you have one?
> >>
> >> [1] 
> >> http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html#ApacheFelixMavenBundlePlugin%28BND%29-DefaultBehavior
> >>
> >> Cheers,
> >> Jeremy
> >>
> >>> thanks
> >>> david jencks
> >>>
> >>>
> >>>
> >>>> Alasdair
> >>>>
> >>>> On 9 March 2010 20:43, David Jencks <[email protected]> wrote:
> >>>>>
> >>>>> On Mar 9, 2010, at 12:27 PM, Guillaume Nodet wrote:
> >>>>>
> >>>>>> I think the reason is that the bundle symbolic name is the unique id
> >>>>>> of the bundle.  It has to be globally unique.
> >>>>>> When you use a non OSGi environment, you don't care about the jar
> >>>>>> name, you can simply rename it and it won't hurt anyone.
> >>>>>> In OSGi, the name of the jar doesn't matter either, but the symbolic
> >>>>>> name does.  A good practice is to have the jar be named
> >>>>>> symbolicname-version.jar which ease the identification.  But the
> >>>>>> constraint of uniqueness on the symbolic name kinda forces the use of
> >>>>>> the org.apache.aries.xxx naming convention for the symbolic name,
> >>>>>> hence for the artifact.
> >>>>>>
> >>>>>> Makes sense ?
> >>>>>
> >>>>> Why is naming the jar symbolicname-version.jar good practice?  Obviously
> >>>>> if
> >>>>> you think this then you will do it, but you've just asserted that doing
> >>>>> this
> >>>>> is a good idea without any support.
> >>>>>
> >>>>> It seems to me that the question kinda boils down to who wins, maven or
> >>>>> eclipse.
> >>>>>
> >>>>> david jencks
> >>>>>
> >>>>>
> >>>>>>
> >>>>>> On Tue, Mar 9, 2010 at 21:20, Kevan Miller <[email protected]>
> >>>>>> wrote:
> >>>>>>>
> >>>>>>> On Mar 9, 2010, at 2:06 PM, Alasdair Nottingham wrote:
> >>>>>>>
> >>>>>>>> Maven insists on naming the jar artifactid-version.jar since we 
> >>>>>>>> wanted
> >>>>>>>> our jars to follow the bundle_symolicname-version.jar convention it
> >>>>>>>> forces
> >>>>>>>> duplication in the artifact id.
> >>>>>>>>
> >>>>>>>> This is why I was asking if we could get the jar name to be generated
> >>>>>>>> from the group and artifact id on IRC last week.
> >>>>>>>
> >>>>>>> That's not really answering my question. artifactid is essentially the
> >>>>>>> jar file name and trying to get maven to act otherwise, is just going
> >>>>>>> to
> >>>>>>> have a bad ending... So, to rephrase in your terms, why does the jar
> >>>>>>> file
> >>>>>>> name need to follow the current naming convention?
> >>>>>>>
> >>>>>>> --kevan
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Cheers,
> >>>>>> Guillaume Nodet
> >>>>>> ------------------------
> >>>>>> Blog: http://gnodet.blogspot.com/
> >>>>>> ------------------------
> >>>>>> Open Source SOA
> >>>>>> http://fusesource.com
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Alasdair Nottingham
> >>>> [email protected]
> >>>
> >>>
> >>
> >
> 
> 
> 
> -- 
> Alasdair Nottingham
> [email protected]
                                          
_________________________________________________________________
We want to hear all your funny, exciting and crazy Hotmail stories. Tell us now
http://clk.atdmt.com/UKM/go/195013117/direct/01/

Reply via email to