Otavio Biasutti created MASSEMBLY-920:
-----------------------------------------
Summary: ContainerDescriptorHandler for MetaInf-Services breaks
folder structure
Key: MASSEMBLY-920
URL: https://issues.apache.org/jira/browse/MASSEMBLY-920
Project: Maven Assembly Plugin
Issue Type: Bug
Components: component descriptor
Affects Versions: 3.1.1
Reporter: Otavio Biasutti
I have my own jar-with-dependecies assembly and I need to use the
MetaInf-Services ContainerDescriptorHandler to aggregate all services and avoid
overriding.
The plugin does not respect the folder structure inside META-INF/services.
Camel is a good example of dependecy that can be used to reproduce the problem.
It defines its services in a nested folder structure, as in:
{quote}
META-INF/services/org/apache/camel/TypeConverter
{quote}
What really happens is that the folder structure is indeed created but the
TypeConverter file is moved to the root of the services, i.e.
*META-INF/services*
I had to patch the code and define a custom ContainerDescriptorHandler to fix
the problem.
The fix is straightforward. I simply inherited the provided implementation of
MetaInfServiceHandler and coded an overriden version of the following method
like this:
{code}
@Override
protected String getOutputPathPrefix(final FileInfo fileInfo) {
return Paths.get(fileInfo.getName()).getParent().toString() + "/";
}
{code}
All services were properly aggreggated after that.
This may be the best fix for several related bugs I found online, like this one
here:
https://stackoverflow.com/questions/37304195/camel-restlet-not-working-in-jar
Cheer
Otávio
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)