Me encontré con este problema porque el complemento Android-Maven en Eclipse aparentemente no reconocía referencias transitivas y referencias referenciadas dos veces de un par de proyectos (incluido un proyecto de biblioteca de Android), e incluyéndolos más de una vez. Tuve que usar hocus-pocus para incluir todo solo una vez, aunque se supone que Maven se ocupará de todo esto.
Por ejemplo, tenía una biblioteca central globalmentor-core, que también fue utilizada por globalmentor-google y globalmentor-android (la última de las cuales es una biblioteca de Android). En globalmentor-android pom.xml
, tuve que marcar la dependencia como "proporcionada", así como excluida de otras bibliotecas en las que se incluía de forma transitiva:
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice; it must therefore be included manually (either explicitly
or transitively) in dependent projects -->
<scope>provided</scope>
</dependency>
Luego, en la aplicación final, pom.xml
tuve que usar el truco correcto para permitir solo una ruta de inclusión, así como no incluir explícitamente la biblioteca principal:
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice -->
<!-- <dependency> -->
<!-- <groupId>com.globalmentor</groupId> -->
<!-- <artifactId>globalmentor-core</artifactId> -->
<!-- <version>1.0-SNAPSHOT</version> -->
<!-- </dependency> -->
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-google</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<!-- android-maven-plugin can't seem to automatically keep this from
being included twice -->
<exclusion>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-android</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>