Merging removes elements from intermediate XML #4
Description
I have the case where I have two implementations DockerComposeConfigHandler
and PropertyConfigHandler
of the same role ExternalConfigHandler
which I want to injects into a List field of another component. All three components are annotated with @Component
and the plexus-component-metadata
plugin is used to (a) generate the components.xml from these annotated files and (b) merged it with a static components.xml
(which defines some lifecycles).
Whereas the generation into the intermediat XML in target/components.xml
works as expected, after merging in the static XML into target/classes/META-INF/plexus/components.xml
one of the two components to inject is missing (DockerComposeConfigHandler
in this case).
Here are the three files
Static components.xml
<component-set>
<components>
<!-- Lifecycle for a build + integration test -->
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<!--
phase mappings extend from jar mappings
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Default_Lifecycle_Bindings_-_Packaging_ejb__ejb3__jar__par__rar__war
-->
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:build</package>
<pre-integration-test>io.fabric8:docker-maven-plugin:start</pre-integration-test>
<integration-test>org.apache.maven.plugins:maven-failsafe-plugin:integration-test</integration-test>
<verify>io.fabric8:docker-maven-plugin:stop,org.apache.maven.plugins:maven-failsafe-plugin:verify</verify>
<deploy>io.fabric8:docker-maven-plugin:push</deploy>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
<!-- Lifecycle for a pure docker Build build -->
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker-build</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:build</package>
<deploy>io.fabric8:docker-maven-plugin:push</deploy>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker-tar</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:source</package>
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
</components>
</component-set>
Intermediate components.xml
<component-set>
<components>
<component>
<role>io.fabric8.maven.docker.assembly.DockerAssemblyManager</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.assembly.DockerAssemblyManager</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
<description></description>
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.apache.maven.plugin.assembly.archive.AssemblyArchiver</role>
<role-hint></role-hint>
<field-name>assemblyArchiver</field-name>
</requirement>
<requirement>
<role>org.apache.maven.plugin.assembly.io.AssemblyReader</role>
<role-hint></role-hint>
<field-name>assemblyReader</field-name>
</requirement>
<requirement>
<role>org.codehaus.plexus.archiver.manager.ArchiverManager</role>
<role-hint></role-hint>
<field-name>archiverManager</field-name>
</requirement>
<requirement>
<role>org.codehaus.plexus.archiver.Archiver</role>
<role-hint>track</role-hint>
<field-name>trackArchiver</field-name>
</requirement>
</requirements>
</component>
<component>
<role>org.codehaus.plexus.archiver.Archiver</role>
<role-hint>track</role-hint>
<implementation>io.fabric8.maven.docker.assembly.MappingTrackArchiver</implementation>
<instantiation-strategy>singleton</instantiation-strategy>
<description></description>
<isolated-realm>false</isolated-realm>
</component>
<component>
<role>io.fabric8.maven.docker.config.handler.ExternalConfigHandler</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.config.handler.compose.DockerComposeConfigHandler</implementation>
<description></description>
<isolated-realm>false</isolated-realm>
</component>
<component>
<role>io.fabric8.maven.docker.config.handler.ImageConfigResolver</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.config.handler.ImageConfigResolver</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
<description></description>
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>io.fabric8.maven.docker.config.handler.ExternalConfigHandler</role>
<field-name>handlers</field-name>
</requirement>
</requirements>
</component>
<component>
<role>io.fabric8.maven.docker.config.handler.ExternalConfigHandler</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.config.handler.property.PropertyConfigHandler</implementation>
<description></description>
<isolated-realm>false</isolated-realm>
</component>
<component>
<role>io.fabric8.maven.docker.service.ServiceHubFactory</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.service.ServiceHubFactory</implementation>
<instantiation-strategy>singleton</instantiation-strategy>
<description></description>
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.apache.maven.plugin.BuildPluginManager</role>
<role-hint></role-hint>
<field-name>pluginManager</field-name>
</requirement>
<requirement>
<role>io.fabric8.maven.docker.assembly.DockerAssemblyManager</role>
<role-hint></role-hint>
<field-name>dockerAssemblyManager</field-name>
</requirement>
</requirements>
</component>
</components>
</component-set>
Merged components.xml (missing one handler)
<?xml version="1.0" encoding="UTF-8"?>
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:build</package>
<pre-integration-test>io.fabric8:docker-maven-plugin:start</pre-integration-test>
<integration-test>org.apache.maven.plugins:maven-failsafe-plugin:integration-test</integration-test>
<verify>io.fabric8:docker-maven-plugin:stop,org.apache.maven.plugins:maven-failsafe-plugin:verify</verify>
<deploy>io.fabric8:docker-maven-plugin:push</deploy>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker-build</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:build</package>
<deploy>io.fabric8:docker-maven-plugin:push</deploy>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>docker-tar</role-hint>
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
<configuration>
<lifecycles>
<lifecycle>
<id>default</id>
<phases>
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
<test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
<package>org.apache.maven.plugins:maven-jar-plugin:jar,io.fabric8:docker-maven-plugin:source</package>
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
</phases>
</lifecycle>
</lifecycles>
</configuration>
</component>
<component>
<role>io.fabric8.maven.docker.assembly.DockerAssemblyManager</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.assembly.DockerAssemblyManager</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
<description />
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.apache.maven.plugin.assembly.archive.AssemblyArchiver</role>
<role-hint />
<field-name>assemblyArchiver</field-name>
</requirement>
<requirement>
<role>org.apache.maven.plugin.assembly.io.AssemblyReader</role>
<role-hint />
<field-name>assemblyReader</field-name>
</requirement>
<requirement>
<role>org.codehaus.plexus.archiver.manager.ArchiverManager</role>
<role-hint />
<field-name>archiverManager</field-name>
</requirement>
<requirement>
<role>org.codehaus.plexus.archiver.Archiver</role>
<role-hint>track</role-hint>
<field-name>trackArchiver</field-name>
</requirement>
</requirements>
</component><component>
<role>org.codehaus.plexus.archiver.Archiver</role>
<role-hint>track</role-hint>
<implementation>io.fabric8.maven.docker.assembly.MappingTrackArchiver</implementation>
<instantiation-strategy>singleton</instantiation-strategy>
<description />
<isolated-realm>false</isolated-realm>
</component><component>
<role>io.fabric8.maven.docker.config.handler.ExternalConfigHandler</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.config.handler.property.PropertyConfigHandler</implementation>
<description />
<isolated-realm>false</isolated-realm>
</component><component>
<role>io.fabric8.maven.docker.config.handler.ImageConfigResolver</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.config.handler.ImageConfigResolver</implementation>
<instantiation-strategy>per-lookup</instantiation-strategy>
<description />
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>io.fabric8.maven.docker.config.handler.ExternalConfigHandler</role>
<field-name>handlers</field-name>
</requirement>
</requirements>
</component><component>
<role>io.fabric8.maven.docker.service.ServiceHubFactory</role>
<role-hint>default</role-hint>
<implementation>io.fabric8.maven.docker.service.ServiceHubFactory</implementation>
<instantiation-strategy>singleton</instantiation-strategy>
<description />
<isolated-realm>false</isolated-realm>
<requirements>
<requirement>
<role>org.apache.maven.plugin.BuildPluginManager</role>
<role-hint />
<field-name>pluginManager</field-name>
</requirement>
<requirement>
<role>io.fabric8.maven.docker.assembly.DockerAssemblyManager</role>
<role-hint />
<field-name>dockerAssemblyManager</field-name>
</requirement>
</requirements>
</component></components>
</component-set>