You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "BJ Hargrave (JIRA)" <ji...@apache.org> on 2006/09/28 22:50:50 UTC

[jira] Commented: (FELIX-155) A better bundle/artifact version numbering scheme

    [ http://issues.apache.org/jira/browse/FELIX-155?page=comments#action_12438550 ] 
            
BJ Hargrave commented on FELIX-155:
-----------------------------------

Bundles should not be depenedent on the implementation version of the framework. They should only depend upon the package versions of the framework packages they use (org.osgi.framework;version=1.3, etc.) I know Maven does not support package level dependencies, but no bundle should depend upon the framwork for org.osgi packages. Instead one must depend upon the org.osgi.core, org.osgi.compendium artifacts.

> 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