Corri para esse problema porque o plug-in Android-Maven no Eclipse aparentemente não reconhecia referências transitivas e referências referenciadas duas vezes em alguns projetos (incluindo um projeto de biblioteca do Android) e incluí-las mais de uma vez. Eu tive que usar o hocus-pocus para incluir tudo apenas uma vez, mesmo que Maven deva cuidar de tudo isso.
Por exemplo, eu tinha uma biblioteca principal globalmentor-core, que também era usada pelo globalmentor-google e globalmentor-android (o último dos quais é uma biblioteca Android). No globalmentor-android pom.xml
, tive que marcar a dependência como "fornecida", além de ser excluída de outras bibliotecas nas quais foi incluída transitivamente:
<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>
Então, no aplicativo final, pom.xml
eu tive que usar as artimanhas certas para permitir apenas um caminho de inclusão - além de não incluir explicitamente a 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>