You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Pavel Bekkerman (Jira)" <ji...@apache.org> on 2020/05/24 17:47:00 UTC

[jira] [Commented] (MSHADE-291) shadedPattern applied multiples times when relocating the contents of META-INF/services files

    [ https://issues.apache.org/jira/browse/MSHADE-291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17115398#comment-17115398 ] 

Pavel Bekkerman commented on MSHADE-291:
----------------------------------------

I have been using 3.1.1 version of the plugin, until ran in that issue.

Unfortunately, I have to report, the FIX is still NON-functional. Moreover, ServicesResourceTransformer seems to be broken completely in 3.2.2+(!)

I tried 3.2.2, 3.2.3, and 3.3.0-SNAPSHOT built from the latest `master`. 

Whatever I do, I'm getting the following error message: 
{code:java}
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.3.0-SNAPSHOT:shade (default) on project XXXXXXX: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.3.0-SNAPSHOT:shade for parameter resource: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ServicesResourceTransformer -> [Help 1]{code}
Here's the stack trace:

 
{code:java}
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.2.2:shade (default) on project XXXXXXXXXXX: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.2:shade for parameter resource: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ServicesResourceTransformerorg.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.2.2:shade (default) on project XXXXXXXXXXXX: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.2:shade for parameter resource: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ServicesResourceTransformer 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:498) 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.PluginConfigurationException: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.2:shade for parameter resource: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ServicesResourceTransformer at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:662) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:594) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) ... 20 moreCaused by: org.codehaus.plexus.component.configurator.ComponentConfigurationException: Cannot find 'resource' in class org.apache.maven.plugins.shade.resource.ServicesResourceTransformer at org.eclipse.sisu.plexus.CompositeBeanHelper.setProperty(CompositeBeanHelper.java:252) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:101) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.fromConfiguration(ObjectWithFieldsConverter.java:57) at org.codehaus.plexus.component.configurator.converters.composite.AbstractCollectionConverter.fromChildren(AbstractCollectionConverter.java:54) at org.codehaus.plexus.component.configurator.converters.composite.ArrayConverter.fromConfiguration(ArrayConverter.java:51) at org.eclipse.sisu.plexus.CompositeBeanHelper.convertProperty(CompositeBeanHelper.java:273) at org.eclipse.sisu.plexus.CompositeBeanHelper.setProperty(CompositeBeanHelper.java:210) at org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter.processConfiguration(ObjectWithFieldsConverter.java:101) at org.codehaus.plexus.component.configurator.BasicComponentConfigurator.configureComponent(BasicComponentConfigurator.java:34) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:632) ... 23 more
{code}
When debugging the plugin execution I was able to spot the following:
{code:java}
...
<transformers><transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"><resource>META-INF/spring.handlers</resource>
</transformer>
</transformers>
...{code}
My configuration is just:
{code:java}
<transformers> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" /> </transformers>{code}
META-INF/spring.handlers is not mentioned anywhere in my project.

I know META-INF/spring.handlers is mentioned in the Transformer usage examples. I don't understand how it made its way into the execution...

Unfortunately, I wasn't able to spot its origin. But, clearly even if the FIX to the issue in context is indeed available since 3.2.2+ - We're still blocked, as ServicesResourceTransformer simply stopped working in those releases(!) 

 

> shadedPattern applied multiples times when relocating the contents of META-INF/services files
> ---------------------------------------------------------------------------------------------
>
>                 Key: MSHADE-291
>                 URL: https://issues.apache.org/jira/browse/MSHADE-291
>             Project: Maven Shade Plugin
>          Issue Type: Bug
>    Affects Versions: 3.1.1, 3.2.0, 3.2.1
>            Reporter: Jan Luehe
>            Assignee: Robert Scholte
>            Priority: Major
>              Labels: up-for-grabs
>             Fix For: 3.2.2
>
>
> Steps to reproduce:
> 1. Modified the test case for https://issues.apache.org/jira/browse/MSHADE-190, as follows:
> {code:java}
> diff --git a/pom.xml b/pom.xml
> index 746b700..aea9abb 100644
> --- a/pom.xml
> +++ b/pom.xml
> @@ -68,12 +68,12 @@
>              <plugin>
>                  <groupId>org.apache.maven.plugins</groupId>
>                  <artifactId>maven-shade-plugin</artifactId>
> -                <version>2.4</version>
> +                <version>3.1.1</version>
>                  <configuration>
>                      <relocations>
>                          <relocation>
> -                            <pattern>org.eclipse.*</pattern>
> -                            <shadedPattern>borg.eclipse.*</shadedPattern>
> +                            <pattern>org.eclipse</pattern>
> +                            <shadedPattern>org.eclipse1234</shadedPattern>
>                          </relocation>
>                      </relocations>
>                      <transformers>
> {code}
> 2. mvn package
> 3. jar -xvf target/shade-meta-tc-1.0-SNAPSHOT.jar META-INF/services
> 4. cat META-INF/services/org.osgi.framework.launch.FrameworkFactory
> The shaded service implementation class looks as follows: 
> {code:java}
> org.eclipse12341234.osgi.launch.EquinoxFactory
> {code}
> It appears that shadedPattern was applied twice.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)