You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Nick Dimiduk (JIRA)" <ji...@apache.org> on 2015/06/12 18:57:00 UTC
[jira] [Commented] (MASSEMBLY-773) MetaInfServicesHandler catalog
is not cleared between invocations in multimodule projects
[ https://issues.apache.org/jira/browse/MASSEMBLY-773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14583699#comment-14583699 ]
Nick Dimiduk commented on MASSEMBLY-773:
----------------------------------------
Wow, thanks for the quick fix [~krosenvold]!
> 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
> 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)