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

Robert Scholte updated MSHADE-252:
----------------------------------
    Description: 
per description in 
https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeSourcesContent,
 when set it to true, 
"it will attempt to shade the contents of the java source files when creating 
the sources jar." However, it seems will blindly shade all the source files 
include those are excluded from relocation rules.

This could be illustrated with a simple example:

Assume there are two classes defined in two packages as below:
{code:title=A.java}
package com.fake.fooA;
import com.fake.fooB;
public Class A {}
{code}

{code:title=B.java}
package com.fake.fooB;
import com.fake.fooA;
public class B {}
{code}

and the maven config looks like:
{code:xml}
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <!-- Run shade goal on package phase -->
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <shadedArtifactAttached>false</shadedArtifactAttached>
              <createSourcesJar>true</createSourcesJar>
              <shadeSourcesContent>true</shadeSourcesContent>
              <relocations>
                <relocation>
                  <pattern>com.fake</pattern>
                  <shadedPattern>.com.fake.shaded</shadedPattern>
                  <excludes>
                    <exclude>com.fake.fooA.*</exclude>
                  </excludes>
                </relocation>
               </relocations> 
{code}

Then the shade plugin will modify the B's source file to be:
{code}
package com.fake.shaded.fooB;
import com.fake.shaded.fooA;
public class B {}
{code}

Notice that package A's path was also updated, which is wrong as it's not got 
relocated.

  was:
per description in 
https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeSourcesContent,
 when set it to true, 
"it will attempt to shade the contents of the java source files when creating 
the sources jar." However, it seems will blindly shade all the source files 
include those are excluded from relocation rules.

This could be illustrated with a simple example:

Assume there are two classes defined in two packages as below:
A.java:
package com.fake.fooA;
import com.fake.fooB;
public Class A {}

B.java:
package com.fake.fooB;
import com.fake.fooA;
public class B {}

and the maven config looks like:
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
        <executions>
          <!-- Run shade goal on package phase -->
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <shadedArtifactAttached>false</shadedArtifactAttached>
              <createSourcesJar>true</createSourcesJar>
              <shadeSourcesContent>true</shadeSourcesContent>
              <relocations>
                <relocation>
                  <pattern>com.fake</pattern>
                  <shadedPattern>.com.fake.shaded</shadedPattern>
                  <excludes>
                    <exclude>com.fake.fooA.*</exclude>
                  </excludes>
                </relocation>
               </relocations> 

Then the shade plugin will modify the B's source file to be:
package com.fake.shaded.fooB;
import com.fake.shaded.fooA;
public class B {}

Notice that package A's path was also updated, which is wrong as it's not got 
relocated.


> shadeSourcesContent is broken when combined with partial relocation
> -------------------------------------------------------------------
>
>                 Key: MSHADE-252
>                 URL: https://issues.apache.org/jira/browse/MSHADE-252
>             Project: Maven Shade Plugin
>          Issue Type: Bug
>    Affects Versions: 2.4.3, 3.0.0
>            Reporter: Zhenyu Yang
>              Labels: easyfix
>
> per description in 
> https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeSourcesContent,
>  when set it to true, 
> "it will attempt to shade the contents of the java source files when creating 
> the sources jar." However, it seems will blindly shade all the source files 
> include those are excluded from relocation rules.
> This could be illustrated with a simple example:
> Assume there are two classes defined in two packages as below:
> {code:title=A.java}
> package com.fake.fooA;
> import com.fake.fooB;
> public Class A {}
> {code}
> {code:title=B.java}
> package com.fake.fooB;
> import com.fake.fooA;
> public class B {}
> {code}
> and the maven config looks like:
> {code:xml}
>      <plugin>
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-shade-plugin</artifactId>
>         <version>2.4.3</version>
>         <executions>
>           <!-- Run shade goal on package phase -->
>           <execution>
>             <phase>package</phase>
>             <goals>
>               <goal>shade</goal>
>             </goals>
>             <configuration>
>               <shadedArtifactAttached>false</shadedArtifactAttached>
>               <createSourcesJar>true</createSourcesJar>
>               <shadeSourcesContent>true</shadeSourcesContent>
>               <relocations>
>                 <relocation>
>                   <pattern>com.fake</pattern>
>                   <shadedPattern>.com.fake.shaded</shadedPattern>
>                   <excludes>
>                     <exclude>com.fake.fooA.*</exclude>
>                   </excludes>
>                 </relocation>
>                </relocations> 
> {code}
> Then the shade plugin will modify the B's source file to be:
> {code}
> package com.fake.shaded.fooB;
> import com.fake.shaded.fooA;
> public class B {}
> {code}
> Notice that package A's path was also updated, which is wrong as it's not got 
> relocated.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to