[ 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