Hi,
I had somehow lengthy discussion with Juris about config modules,
versions and dependency resolution.
Recently added default modules that are specified in tc.properties
made whole picture little more messy, especially if take Maven into the
equation.
To summarize, DSO configuration modules that are used at runtime can
come from several places:
-- l1.configbundles.default entry in tc.properties:
l1.configbundles.default =
excludes-config;guimodels-config;jdk15-preinst-config;spring-config;standard-config
-- modules declared in tc-config.xml
<modules>
<module name="clustered-ehcache-1.3" version="1.0.0"/>
</modules>
-- transitive dependencies listed in manifest.mf of any other module.
Foe example for clustered-hibernate-3.1.2 we currently have:
Bundle-SymbolicName: org.terracotta.modules.clustered-hibernate-3.1.2
Bundle-Version: 1.0.0
Require-Bundle: org.terracotta.modules.modules_common,
org.terracotta.modules.clustered-cglib-2.1.3
If you think about above examples, they leave lots of assumptions
about what modules versions should be used and it could lead to some
nasty issues at the runtime.
For some reason I thought it been agreed that we should always
explicitly specify all versions and also use -SNAPSHOTS between
releases, but it doesn't seem like it been changed in existing modules,
except that tcbuild is adding -SNAPSHOT suffix to the nightly build jars
deployed to maven repo.
So, above configuration snippets should be changed as the following:
l1.configbundles.default =
excludes-config,1.0.0-SNAPSHOT;guimodels-config,1.0.0-SNAPSHOT;jdk15-preinst-config,1.0.0-SNAPSHOT;spring-config,1.0.0-SNAPSHOT;standard-config,1.0.0-SNAPSHOT
Bundle-SymbolicName: org.terracotta.modules.clustered-hibernate-3.1.2
Bundle-Version: 1.0.0-SNAPSHOT
Require-Bundle:
org.terracotta.modules.modules_common;bundle-version="1.0.0.SNAPSHOT",
org.terracotta.modules.clustered-cglib-2.1.3;bundle-version="1.0.0.SNAPSHOT"
note that we can't use "-" for SNAPSHOT suffix in the bundle version,
because OSGi prohibits that, so we may need some mapping in our module
jar resolver code.
Then at release/code freeze time someone will have to do a quite
verbose operation and change all those versions to the release versions.
Any thoughts?
regards,
Eugene
_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev