diff --git a/src/main/java/com/jayway/maven/plugins/android/phase_prebuild/ClasspathModifierLifecycleParticipant.java b/src/main/java/com/jayway/maven/plugins/android/phase_prebuild/ClasspathModifierLifecycleParticipant.java index a2a0e879d..23c571b93 100644 --- a/src/main/java/com/jayway/maven/plugins/android/phase_prebuild/ClasspathModifierLifecycleParticipant.java +++ b/src/main/java/com/jayway/maven/plugins/android/phase_prebuild/ClasspathModifierLifecycleParticipant.java @@ -265,8 +265,15 @@ private void addClassesToClasspath( UnpackedLibHelper helper, MavenProject proje throw new MavenExecutionException( "Could not add " + classesJar.getName() + " as dependency", e ); } - // Add the classes to the classpath - final Dependency dependency = createSystemScopeDependency( artifact, classesJar, "extracted" ); + + // Modify the classpath to use an extracted dex file. This will overwrite + // any exisiting dependencies with the same information. + final Dependency dependency = createSystemScopeDependency( artifact, classesJar, null ); + final Dependency providedJar = findProvidedDependencies( dependency, project ); + if ( providedJar != null ) + { + project.getModel().removeDependency( providedJar ); + } project.getModel().addDependency( dependency ); } @@ -285,5 +292,25 @@ private Dependency createSystemScopeDependency( Artifact artifact, File location dependency.setSystemPath( location.getAbsolutePath() ); return dependency; } + + private Dependency findProvidedDependencies( Dependency dexDependency, MavenProject project ) + { + for ( Dependency dependency : project.getDependencies() ) + { + if ( dependency.getScope().equals( Artifact.SCOPE_PROVIDED ) ) + { + if ( dependency.getArtifactId().equals( dexDependency.getArtifactId() ) + && dependency.getGroupId().equals( dexDependency.getGroupId() ) + && dependency.getType().equals( dexDependency.getType() ) + && dependency.getVersion().equals( dexDependency.getVersion() ) ) + { + return dependency; + } + } + } + return null; + + } + }