2012-04-10 19 views
5

Tengo una configuración de proyecto de Android utilizando el complemento maven-android. Este complemento se adhiere a las carpetas de salida Maven para la ubicación del archivo R.java (es decir, target/generated-sources/r).Cambiar la carpeta de salida para Android R.java en Eclipse al usar Maven

Sin embargo, al usar este proyecto en Eclipse, no puedo configurar aapt para que dependa de esa carpeta.

Incluso si voy manualmente en las propiedades del proyecto y configurar las carpetas de forma manual, el plugin ADT entra y restablece sólo algunos de los ajustes (es decir, añade la carpeta /gen atrás como una carpeta de origen y restaura la salida carpeta a /bin/classes en lugar de /target/classes), dejando la carpeta maven /target/generated-sources/r y rompiendo la compilación del proyecto.

Me gustaría utilizar la estructura de carpetas predeterminada de Maven con Eclipse ADT. ¿Alguna idea sobre cómo puedo hacer esto?

Gracias


En respuesta a los comentarios:

  • Sí, estoy usando el plugin M2e-androide.
  • Dado que ADT todavía está generando R.java en /gen, Eclipse no puede compilar si todavía existe un R.java bajo target/generated-sources/r debido a las definiciones de clases duplicadas.
+0

¿Está utilizando el plugin m2e-android? –

+0

_mientras abandona la carpeta maven/target/generated-sources/r y rompe la compilación del proyecto._ ¿Puede explicar qué se rompe al crear un proyecto en Eclipse? – yorkw

Respuesta

4

Desafortunadamente, el Android Connector for M2E no admite mover carpetas generadas como la carpeta de gen ADT a otros directorios. Esta es una restricción de la ADT, aunque hay un boleto a explorar una forma de evitar esta restricción:

https://github.com/rgladwell/m2e-android/issues/68

Si desea estar al día, por favor comentar en este billete.

+0

aapt permite especificar una carpeta personalizada para la carpeta generada (utilizando el modificador -J). ¿Es Android Connector que confía en aapt bajo las sábanas? Seguiré el boleto que mencionaste. Gracias. –

+0

No, Android Connector solo depende del ADT que usa el sdklib interno para construir cosas. –

1

Esto parece estar funcionando para mí:

Vamos a mantener el ADT generación como una carpeta de origen, pero cambiar la carpeta de salida para que la carpeta de origen para ser /target/classes.

Puedo construir tanto en eclipse como usando maven desde la línea de comandos, y no tengo problemas de clase R duplicados en ninguno de los casos. Básicamente, Eclipse genera el archivo R.java en /gen, mientras que maven lo genera en /target/generated-sources/r, pero ambas compilaciones ponen el archivo R.class en/target/classes.

Nota: en un momento dado había agregado /gen como un directorio fuente adicional en mi pom.xml usando build-helper-maven-plugin, y tuve que eliminar eso.

Cuestiones relacionadas