Index: src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java =================================================================== --- src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java (revision 666300) +++ src/main/java/org/apache/maven/shared/dependency/analyzer/DefaultProjectDependencyAnalyzer.java (working copy) @@ -71,12 +71,14 @@ { Map artifactClassMap = buildArtifactClassMap( project ); + Set coreClasses = buildCoreClasses(); + Set dependencyClasses = buildDependencyClasses( project ); Set declaredArtifacts = buildDeclaredArtifacts( project ); - - Set usedArtifacts = buildUsedArtifacts( artifactClassMap, dependencyClasses ); - + + Set usedArtifacts = buildUsedArtifacts( artifactClassMap, dependencyClasses, coreClasses ); + Set usedDeclaredArtifacts = new LinkedHashSet( declaredArtifacts ); usedDeclaredArtifacts.retainAll( usedArtifacts ); @@ -159,6 +161,30 @@ return artifactClassMap; } + private Set buildCoreClasses() + throws IOException + { + File lib = new File( System.getProperty( "java.home" ), "lib" ); + if ( !lib.exists() || !lib.isDirectory() || !lib.canRead() ) + { + return Collections.EMPTY_SET; + } + Set result = new HashSet(); + + File[] jars = lib.listFiles(); + for ( int i = 0; i < jars.length; i++ ) + { + File jar = jars[i]; + if ( !jar.isFile() || !jar.canRead() || !jar.getName().endsWith( ".jar" ) ) + { + continue; + } + + result.addAll( classAnalyzer.analyze( jar.toURL() ) ); + } + return result; + } + private Set buildDependencyClasses( MavenProject project ) throws IOException { @@ -192,8 +218,8 @@ return declaredArtifacts; } - - private Set buildUsedArtifacts( Map artifactClassMap, Set dependencyClasses ) + + private Set buildUsedArtifacts( Map artifactClassMap, Set dependencyClasses, Set coreClasses ) { Set usedArtifacts = new HashSet(); @@ -201,6 +227,11 @@ { String className = (String) dependencyIterator.next(); + if ( coreClasses.contains( className ) ) + { + continue; + } + Artifact artifact = findArtifactForClassName( artifactClassMap, className ); if ( artifact != null )