[ 
https://issues.apache.org/jira/browse/MASSEMBLY-773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Scholte updated MASSEMBLY-773:
-------------------------------------
    Assignee: Kristian Rosenvold

> MetaInfServicesHandler catalog is not cleared between invocations in 
> multimodule projects
> -----------------------------------------------------------------------------------------
>
>                 Key: MASSEMBLY-773
>                 URL: https://issues.apache.org/jira/browse/MASSEMBLY-773
>             Project: Maven Assembly Plugin
>          Issue Type: Bug
>    Affects Versions: 2.5.2, 2.5.5
>            Reporter: Nick Dimiduk
>            Assignee: Kristian Rosenvold
>             Fix For: 3.0.0
>
>
> I have a multi-module project (Apache Phoenix) that is using the assembly 
> plugin to build two unrelated uberjars.
> {noformat}
> [INFO] Apache Phoenix ..................................... SUCCESS [  3.705 
> s]
> [INFO] Phoenix Core ....................................... SUCCESS [01:30 
> min]
> [INFO] Phoenix - Flume .................................... SUCCESS [  2.832 
> s]
> [INFO] Phoenix - Pig ...................................... SUCCESS [  2.579 
> s]
> [INFO] Phoenix Query Server Client ........................ SUCCESS [  0.906 
> s]
> [INFO] Phoenix Query Server ............................... SUCCESS [ 33.841 
> s]
> [INFO] Phoenix - Pherf .................................... SUCCESS [ 14.286 
> s]
> [INFO] Phoenix - Spark .................................... SUCCESS [ 33.687 
> s]
> [INFO] Phoenix Assembly ................................... SUCCESS [01:29 
> min]{noformat}
> The first uberjar is built by the {{Assembly}} module and consists of classes 
> from {{Core}}, {{Flume}}, {{Pig}}, {{Spark}}, and sundry dependencies. The 
> second is built in the {{Query Server}} module and consists of {{Core}}, 
> {{Query Server}}, and {{Query Server Client}} modules. Both {{Core}} and 
> {{Query Server Client}} modules provide a 
> {{META-INF/services/java.sql.Driver}} file. As you can see above, the {{Query 
> Server}} module is assembled first, and then the {{Assembly}} module.
> Initially I added the {{metaInf-services}} {{containerDescriptorHandler}} to 
> the {{Assembly}} module (PHOENIX-1995) and everything worked as expected. 
> Later, I added it also to the {{Query Server}} module (PHOENIX-2013). After 
> that, I noticed that the resulting {{java.sql.Driver}} file packaged by 
> {{Assembly}} contains entries for this file from {{Query Server}}.
> After much mucking about with dependencies, excludes, etc, I decided to 
> {{mvnDebug}} the build. With a breakpoint in 
> {{AbstractLineAggregatingHandler#addToArchive}}, sure enough, I see all the 
> {{catalog}} entries from the first assembly invocation in the second 
> invocation. I also see that the instance of {{MetaInfServicesHandler}} and 
> it's {{catalog}} instance are identical between module invocations. 
> Breakpoints at {{AbstractLineAggregatingHandler#getCatalog}} and 
> {{AbstractLineAggregatingHandler#setCatalog}} are never hit, indicating that 
> nothing external is tinkering with the {{catalog}} or its contents.
> I think the instance of {{MetaInfServicesHandler}} should be either reset or 
> re-instantiated between module invocations.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to