You are again mischaracterising eclipse. It does not require all
bundles to be installed in a flat directory, it also support a
"coordinate" type system for storing the bundles, so typically the
eclipse provided bundles go in one directory and products based on
eclipse have their bundles in a different directory.

In any any case I think Guillaume summarized why we do this very well
when he said:

    A good practice is to have the jar be named
symbolicname-version.jar which ease the identification.

basically if you follow the convention we, eclipse, felix and many
others follow you can easily work out the bundles' identity without
having to unpack the jar and look at the manifest.

On the subject of maven and unique artifact ids this post from Jason
van Zyl is what made me believe that artifact ids also need to be
reasonably unique (which our scheme provides):
http://www.mail-archive.com/[email protected]/msg96898.html

Alasdair

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.
>
> 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]

Reply via email to