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" <[email protected]> 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" <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
