Description
When building Karaf distributions, it would be nice to be able to tweak the distribution using Maven profiles to add a feature or a bundle (etc..). However if the Maven profile which adds these bundles/features is not active we currently get an NPE:
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to build assembly at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:268) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 more Caused by: java.lang.NullPointerException at org.apache.felix.utils.properties.ConfigurationHandler.writeValue(ConfigurationHandler.java:724) at org.apache.felix.utils.properties.ConfigurationHandler.write(ConfigurationHandler.java:228) at org.apache.felix.utils.properties.TypedProperties.convertToString(TypedProperties.java:345) at org.apache.felix.utils.properties.TypedProperties.put(TypedProperties.java:172) at org.apache.felix.utils.properties.TypedProperties.put(TypedProperties.java:52) at org.apache.karaf.profile.impl.ProfileBuilderImpl.addAgentConfiguration(ProfileBuilderImpl.java:279) at org.apache.karaf.profile.impl.ProfileBuilderImpl.setBundles(ProfileBuilderImpl.java:198) at org.apache.karaf.profile.assembly.Builder.generateProfile(Builder.java:1392) at org.apache.karaf.profile.assembly.Builder.doGenerateAssembly(Builder.java:556) at org.apache.karaf.profile.assembly.Builder.generateAssembly(Builder.java:446) at org.apache.karaf.tooling.AssemblyMojo.doExecute(AssemblyMojo.java:506) at org.apache.karaf.tooling.AssemblyMojo.execute(AssemblyMojo.java:262)
I've updated a test to better illustrate the enhancement.
The affected properties are:
- startupRepositories
- bootRepositories
- installedRepositories
- startupBundles
- bootBundles
- installedBundles
- blacklistedBundles
- startupFeatures
- bootFeatures
- installedFeatures
- blacklistedFeatures
- startupProfiles
- bootProfiles
- installedProfiles
- blacklistedProfiles
- blacklistedRepositories
Thanks!
Attachments
Issue Links
- links to