Filed as http://jira.codehaus.org/browse/MSHADE-148

I am pretty certain this is a bug, I use the shade plugin pretty heavily
across a variety of projects and this is the first and only time I have
ever had any issues.

Rob


On 6/5/13 11:33 PM, "Baptiste MATHUS" <m...@batmat.net> wrote:

>Hi,
>Thanks for reporting.
>Could you please file a JIRA with the attached problematic pom?
>
>Btw you might want to try users list instead to get feedback and/or to
>double check it's a bug or a misuse.
>
>Cheers
>Le 5 juin 2013 23:57, "Rob Vesse" <rve...@yarcdata.com> a écrit :
>
>> Hi All
>>
>> I've run into what seems like an odd bug where the Shade plugin
>>apparently
>> gets stuck in an infinite loop when attempting to produce the Dependency
>> Reduced POM (DRP).  For now as a hack I've turned off generation of the
>>DRP
>> for my affected project because it is unlikely that the artifact being
>> produced will be pulled in via Maven so having a POM still reference all
>> the dependencies is not a huge issue for me.
>>
>> However I have attempted to produce a minimal test case and debug this a
>> little, hopefully someone more familiar with the plugin can dig into
>>this
>> further and figure out whether this is a bug and how to fix it in future
>> versions of the plugin.
>>
>> Here is a minimal POM that reproduces the problem:
>>
>>
>> <project xmlns="http://maven.apache.org/POM/4.0.0"; xmlns:xsi="
>> http://www.w3.org/2001/XMLSchema-instance";
>>
>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
>> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>>
>> <modelVersion>4.0.0</modelVersion>
>>
>> <groupId>org.example</groupId>
>>
>> <artifactId>shade-dpr-bug</artifactId>
>>
>> <version>0.0.1-SNAPSHOT</version>
>>
>> <name>Maven Shade DPR Bug Demonstrator</name>
>>
>> <description>Repro for an apparent bug discovered in Maven Shade
>> plugin</description>
>>
>> <dependencies>
>>
>> <dependency>
>>
>> <groupId>org.apache.jena</groupId>
>>
>> <artifactId>jena-arq</artifactId>
>>
>> <version>2.10.1</version>
>>
>> </dependency>
>>
>> <!-- If you comment out either of the following dependency then things
>> will work fine -->
>>
>> <dependency>
>>
>> <groupId>org.apache.jena</groupId>
>>
>> <artifactId>jena-fuseki</artifactId>
>>
>> <version>0.2.7</version>
>>
>> <scope>test</scope>
>>
>> </dependency>
>>
>> <dependency>
>>
>> <groupId>org.apache.jena</groupId>
>>
>> <artifactId>jena-fuseki</artifactId>
>>
>> <version>0.2.7</version>
>>
>> <classifier>tests</classifier>
>>
>> <scope>test</scope>
>>
>> </dependency>
>>
>> </dependencies>
>>
>>
>> <build>
>>
>> <plugins>
>>
>> <plugin>
>>
>> <groupId>org.apache.maven.plugins</groupId>
>>
>> <artifactId>maven-shade-plugin</artifactId>
>>
>> <version>2.1</version>
>>
>> <configuration>
>>
>> <!-- If the following is uncommented out then this project builds fine
>>-->
>>
>> <!-- <createDependencyReducedPom>false</createDependencyReducedPom> -->
>>
>> </configuration>
>>
>> <executions>
>>
>> <execution>
>>
>> <phase>package</phase>
>>
>> <goals>
>>
>> <goal>shade</goal>
>>
>> </goals>
>>
>> </execution>
>>
>> </executions>
>>
>> </plugin>
>>
>> </plugins>
>>
>> </build>
>>
>> </project>
>>
>>
>> Essentially the issue appears to be down to the fact that the POM
>> references both the JAR and tests JAR artifacts of a module
>>(jena-fuseki in
>> this case) while also referencing another module (jena-arq) which is a
>> transitive dependency of the other modules.  Per the XML comments if I
>>only
>> pull in one of the JARs for jena-fuseki things will work fine, but if I
>> pull in both dependencies then shade will hang repeatedly creating the
>> dependency reduced POM.  Equally if you don't have a dependency between
>> pulled in that is a dependency of the other dependencies (jena-arq in my
>> example) then again things will work fine.
>>
>>
>> However with this minimal example run at the console I see the
>>following:
>>
>>
>> [INFO] Replacing original artifact with shaded artifact.
>>
>> [INFO] Replacing
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/target/shade-dpr-bug-0.0.
>>1-SNAPSHOT.jar
>> with
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/target/shade-dpr-bug-0.0.
>>1-SNAPSHOT-shaded.jar
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>> [INFO] Dependency-reduced POM written at:
>> 
>>/Users/rvesse/Documents/workspace/shade-dpr-bug/dependency-reduced-pom.xm
>>l
>>
>>
>> This will continue indefinitely until you kill the process.  If I watch
>> the dependency-reduced-pom.xml on the file system the plugin appears to
>>be
>> continually deleting and rewriting this file, each time the file is
>>written
>> it is larger than the previous write.  This implies to me that somehow
>>the
>> DPR creation is getting stuck and not managing to reach a suitable
>>halting
>> state.  On the occasions when I have managed to kill the process while
>>the
>> DPR is non-empty it appears that the problem is that the plugin is
>>adding
>> <exclusions> to the non-test jar version of the dependency and is just
>> repeatedly adding the same set of exclusions.
>>
>>
>> I'm not familiar with the Maven code base and unfortunately I don't have
>> any free time to go delving into the code myself so if someone who knows
>> the plugin could investigate this it would be much appreciated.  As I
>>said
>> I have a workaround (even if is less than ideal) so a resolution is by
>>no
>> means urgent but this certainly seems like a bug that needs addressing.
>> As
>> a naïve (and clearly non-maven expert) suggestion since test
>>dependencies
>> aren't transitive anyway would a simple fix be to simple have DPR
>>creation
>> remove any <scope>test</scope> dependencies as a first step?
>>
>>
>> Thanks,
>>
>>
>> Rob
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to