On Mon, Aug 30, 2010 at 10:59 AM, Raymond Feng <enjoyj...@gmail.com> wrote:
> Hi,
>
> I just added a maven plugin [1] that can check and report duplicate 
> (potentially conflicting) classes from a list of jars within the dependency 
> graph or a directory. It will be useful to detect the classpath hell issue.
>
> The Tuscany maven-dependency-plugin checks and reports duplicate classes 
> among the list of jars within the maven dependency graph or under a directory 
> on the file system.
>
> The maven conflict resolution only handles different versions of the same 
> artifact (same groupId and same artifactId). In reality, there are artifacts 
> with different groupId and/or artifactId containing duplicate classes which 
> can be the same or different. These classes can lead to the classpath hell 
> issue where conflicting classes are on the same classpath.
>
> There is a similar effort in the official maven dependency plugin project to 
> add such function into the analyze goal.
>
> http://jira.codehaus.org/browse/MDEP-275
>
> The Tuscany version has a few advantages over the prototype above:
> * It groups duplicate classes under the list of artifacts
> * It goes one step further to check the size and CRC of the class file and 
> marks the different cases in the report (potentially we can use BCEL to 
> further compare the two classes):
>  * X: the duplicate classes have different size (most likely different 
> versions)
>  * ?: the duplicate classes have the same size but different CRC (probably 
> the same version but were built separately)
>  *  : the duplicate classes have the same size and CRC (most likely the same 
> version).
>
> To use the plugin, you can add the following section to the pom.xml:
>
>            <plugin>
>                <groupId>org.apache.tuscany.maven.plugins</groupId>
>                <artifactId>maven-dependency-plugin</artifactId>
>                <version>1.0.0-SNAPSHOT</version>
>                <configuration>
>                    <verbose>true</verbose>
>                </configuration>
>                <executions>
>                    <execution>
>                        <id>check-class-conflicts</id>
>                        <phase>validate</phase>
>                        <goals>
>                            <goal>check-class-conflicts</goal>
>                        </goals>
>                    </execution>
>                </executions>
>            </plugin>
>
> Ideally, we can get this function into the official maven dependency plugin. 
> I'll start to work with the project to get that going.
>
> [1] 
> https://svn.apache.org/repos/asf/tuscany/maven-plugins/trunk/maven-dependency-plugin/
>
> Thanks,
> Raymond


I guess you would have more interest and people collaborating on this
if you make it available in the maven sandbox [1][2].

[1] 
http://docs.codehaus.org/display/MAVEN/The+Maven+Sandbox+is+for+all+Apache+Committers!
[2] https://svn.apache.org/repos/asf/maven/sandbox/trunk/



-- 
Luciano Resende
http://people.apache.org/~lresende
http://twitter.com/lresende1975
http://lresende.blogspot.com/

Reply via email to