I might have come up with a way to use the feature plugin packagings in the karaf build without profiles as long as we don't use backwards incompatible changes in our builds. The main problem I know about is using the release plugin to do a release because the new version of the features-maven-plugin isn't available in a maven repo yet.
The idea is to define the version of the features-maven-plugin in a maven property and override it on the build command line to a previously released version. I've tried this locally with the 2.1.99-SNAPSHOT branch and 2.99.99-SNAPSHOT trunk. First I built the 2.1.99-SNAPSHOT tree to get this version of the plugin in my local repo. Then I cleaned out any mention of the 2.99.99-SNAPSHOT plugin from my repo and build trunk with mvn clean install -DfeaturesPluginVersion=2.1.99-SNAPSHOT aside from some test failures and problems with a missing war deployer and manual artifacts, this worked fine, using the old 2.1.99-SNAPSHOT plugin. It also built the 2.99.99-SNAPSHOT plugin. Then I built trunk mvn clean install which worked just as well, using the new plugin. So, I think we can leverage this idea in the release plugin, since it builds twice with the new version: for release:prepare we use something on the command line to get the plugin version into the forked maven command line, and for release perform we leave this out. I think to actually find out if this will work I'll need to do a release:prepare on trunk, creating an svn tag which I can then remove again. Does this seem worth experimenting with further or is it too complicated or does someone know that it won't work? I think this actually ought to work with version ranges on the plugin but AFAICT this is going to show up so many maven bugs as to be unworkable. thanks david jencks
