A better bundle/artifact version numbering scheme
-------------------------------------------------

                 Key: FELIX-155
                 URL: http://issues.apache.org/jira/browse/FELIX-155
             Project: Felix
          Issue Type: Improvement
            Reporter: Stephane Frenot
            Priority: Trivial


There is an issue with version management.
For the moment many bundles are versionned on the same scheme as
felix framework. ie : 0.8.0-SNAPSHOT

This is because most of them do not declare a version number in their pom.xml.

But if you declare a specific version number in you pom.xml there is
an issue, because you cannot use anymore the default $pom.version in your
dependencies. So you need to explicitely declare 0.8.0-SNAPSHOT in all
your depencies, that will lead to a management problem later.

This is what happens with an example.

1) The classical files
<project>
  <parent>...felix...</parent>
    ...
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  ...
  <dependencies>
    <dependency>
      <groupId>...</groupId>
      <version>${pom.version}</version>  --> This defaults to the
                                                                               
current pom.xml version
                                                                               
if specified, and to the
                                                                               
parent version number if
                                                                               
not.

2) The classical solution I found in some bundles
<project>
  <parent>...felix...</parent>
    ...
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  <version>0.1.0-SNAPSHOT</version>  --> Declare a specific bundle
                                                                              
version
  ...
  <dependencies>
    <dependency>
      <groupId>...</groupId>
      <version>0.8.0-SNAPSHOT</version>  --> You cannot use  anymore
                                                                                
   ${pom.version} (because
                                                                                
    it is now 0.1.0-SNAPSHOT)
                                                                                
   So you need to specify
                                                                                
   for all your dependencies
                                                                                
   the felix/framework 
                                                                                
  version numbers.

******************
In order to avoid this problem, version dependencies can be declared
in a DependenciesManagement tag in the main pom.xml. This tags
declares general version number dependencies. And declares the default
version number to be used for child artifacts.

<DependenciesManagement>
  <dependency>
    <groupId>${pom.groupId}</groupId>
    <artifactId>org.osgi.core</artifactId>
    <version>0.8.0-SNAPSHOT</version>
    <scope>provided</scope>
  </dependency>
  <dependency>
    <groupId>${pom.groupId}</groupId>
    <artifactId>org.osgi.compendium</artifactId>
    <version>0.8.0-SNAPSHOT</version>
    <scope>provided</scope>
  </dependency>
<DependenciesManagement>

Now your pom.xml can avoid specifying a version number for it's dependencies.
<project>
  <parent>...felix...</parent>
    ...
    <version>0.8.0-SNAPSHOT</version>
  </parent>
  <version>0.1.0-SNAPSHOT</version>  --> Declare a specific bundle
                                         version
  ...
  <dependencies>
    <dependency>
      <groupId>...</groupId>
      <artifactId>org.osgi.core</artifactId>
      <scope>provided</scope>
    </dependency>


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to