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]