Maven + AndroidAnnotations generado pero no accesible clases

Bien.

Estoy intentando crear un proyecto que sea perfectamente capaz de construir usando maven, y maven solamente.

Actualmente estoy frente a este problema de las clases que se generan, y el trabajo bien, siempre y cuando no hay referencia en el código java real.

Lo que significa que si creo un ejemplo como en la documentación que funciona.

Tan pronto como hago algo como

Intención i = new Intent (SettingsActivity_);

entonces la compilación falla con

Error al ejecutar el objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.0: compilar (default-compile) en el proyecto InterestingFind: Error de compilación no puede encontrar el símbolo

cannot find symbol symbol: variable DerpActivity_ location: class be.company.android.DisplayMapActivity 

Sin embargo, los archivos se generan, como se puede ver en la imagen adjunta, pero cuando se mira el proyecto en la vista de Eclipse, solo se ven como carpetas normales y no como "carpeta de origen".

Esto podría explicar por qué no son recogidos, pero me da un poco de dolor de cabeza. Cloné un arquetipo de androide, la versión de liberación.

Por favor, sea de ayuda si de alguna manera piensa que puede ayudarme con este problema! Estructura del proyecto

http://maven.apache.org/maven-v4_0_0.xsd "> 4.0.0

 <parent> <groupId>be.idamediafoundry</groupId> <artifactId>InterestingFind-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <groupId>be.idamediafoundry</groupId> <artifactId>InterestingFind</artifactId> <version>1.0-SNAPSHOT</version> <packaging>apk</packaging> <name>InterestingFind - Application</name> <properties> <androidannotations.version>3.0-SNAPSHOT</androidannotations.version> </properties> <repositories> <repository> <id>snapshots-repository</id> <name>Sonatype oss snapshot repo</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> </dependency> <dependency> <groupId>de.akquinet.android.androlog</groupId> <artifactId>androlog</artifactId> </dependency> <!-- JSON --> <dependency> <groupId> org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.5</version> </dependency> <!-- AndroidAnnotations --> <dependency> <groupId>org.androidannotations</groupId> <artifactId>androidannotations</artifactId> <version>${androidannotations.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.androidannotations</groupId> <artifactId>androidannotations-api</artifactId> <version>${androidannotations.version}</version> </dependency> <!-- Needed for androidannotations --> <dependency> <groupId>org.springframework.android</groupId> <artifactId>spring-android-rest-template</artifactId> <version>${spring-android-version}</version> </dependency> <!-- Google Play Services : Should be compiled and added to local repo --> <dependency> <groupId>com.google.android.gms</groupId> <artifactId>google-play-services</artifactId> <version>5</version> <type>apklib</type> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.5.1</version> <inherited>true</inherited> <extensions>true</extensions> <configuration> <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> <assetsDirectory>${project.basedir}/assets</assetsDirectory> <resourceDirectory>${project.basedir}/res</resourceDirectory> <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> <sdk> <platform>15</platform> </sdk> <undeployBeforeDeploy>true</undeployBeforeDeploy> </configuration> </plugin> <plugin> <artifactId>versions-maven-plugin</artifactId> <groupId>org.codehaus.mojo</groupId> <version>2.0</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>com.android.ide.eclipse.adt.AndroidNature</projectnature> <projectnature>org.eclipse.jdt.core.javanature</projectnature> </additionalProjectnatures> </configuration> </plugin> </plugins> </build> <profiles> <profile> <id>release</id> <build> <plugins> <plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <executions> <execution> <id>process-classes-with-proguard</id> <phase>process-classes</phase> <goals> <goal>proguard</goal> </goals> <configuration> <proguardVersion>4.4</proguardVersion> <maxMemory>256m</maxMemory> <injar>classes</injar> <libs> <lib>${rt.jar.path}</lib> <lib>${jsse.jar.path}</lib> </libs> <obfuscate>true</obfuscate> <addMavenDescriptor>false</addMavenDescriptor> <proguardInclude>${project.basedir}/proguard.conf</proguardInclude> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard</artifactId> <version>4.4</version> <scope>runtime</scope> </dependency> </dependencies> </plugin> <plugin> <artifactId>maven-jarsigner-plugin</artifactId> <executions> <execution> <id>sign-application-apk</id> <phase>package</phase> <goals> <goal>sign</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <executions> <execution> <id>zipalign-application-apk</id> <phase>package</phase> <goals> <goal>zipalign</goal> </goals> </execution> </executions> <configuration> <release>true</release> <zipalign> <verbose>true</verbose> <inputApk>${project.build.directory}/${project.artifactId}-${project.version}.apk</inputApk> <outputApk>${project.build.directory}/${project.artifactId}-${project.version}-signed-aligned.apk</outputApk> </zipalign> <sign> <debug>false</debug> </sign> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <configuration> <artifacts> <artifact> <file>${project.build.directory}/proguard_map.txt</file> <type>map</type> <classifier>release</classifier> </artifact> </artifacts> </configuration> <executions> <execution> <id>attach-signed-aligned</id> <phase>package</phase> <goals> <goal>attach-artifact</goal> </goals> </execution> <execution> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${project.basedir}/target/generated-sources/annotations</source> </sources> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> 

Padre Pom:

http://maven.apache.org/maven-v4_0_0.xsd "> 4.0.0

 <groupId>be.idamediafoundry</groupId> <artifactId>InterestingFind-parent</artifactId> <version>1.0-SNAPSHOT</version> <packaging>pom</packaging> <name>InterestingFind - Parent</name> <modules> <module>InterestingFind</module> <module>InterestingFind-it</module> </modules> <properties> <platform.version>4.1.1.4</platform.version> <android-plugin>3.5.1</android-plugin> <spring-android-version>1.0.1.RELEASE</spring-android-version> <sign.keystore>${project.basedir}/my-release-key.keystore</sign.keystore> <sign.alias> </sign.alias> <sign.storepass> </sign.storepass> <sing.keypass> </sing.keypass> </properties> <repositories> <repository> <id>codehaus-snapshots</id> <url>http://snapshots.repository.codehaus.org</url> </repository> </repositories> <dependencyManagement> <dependencies> <dependency> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>android</artifactId> <version>${platform.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>android-test</artifactId> <version>${platform.version}</version> <scope>provided</scope> </dependency> <!-- Androlog is a logging and reporting library for Android --> <dependency> <groupId>de.akquinet.android.androlog</groupId> <artifactId>androlog</artifactId> <version>1.0.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>provided</scope> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>3.5.1</version> <inherited>true</inherited> <configuration> <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> <assetsDirectory>${project.basedir}/assets</assetsDirectory> <resourceDirectory>${project.basedir}/res</resourceDirectory> <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> <sdk> <platform>15</platform> </sdk> <undeployBeforeDeploy>true</undeployBeforeDeploy> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> <extensions>true</extensions> </plugin> <plugin> <artifactId>maven-enforcer-plugin</artifactId> <version>1.0</version> </plugin> <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.1</version> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> </configuration> </plugin> <plugin> <artifactId>maven-jarsigner-plugin</artifactId> <version>1.2</version> <inherited>true</inherited> <configuration> <removeExistingSignatures>true</removeExistingSignatures> <archiveDirectory /> <archive>${project.build.directory}/${project.build.finalName}.${project.packaging}</archive> <verbose>true</verbose> <certs>true</certs> <keystore>${sign.keystore}</keystore> <alias>${sign.alias}</alias> <storepass>${sign.storepass}</storepass> <keypass>${sign.keypass}</keypass> </configuration> </plugin> <plugin> <groupId>com.pyx4me</groupId> <artifactId>proguard-maven-plugin</artifactId> <version>2.0.4</version> <dependencies> <dependency> <groupId>net.sf.proguard</groupId> <artifactId>proguard</artifactId> <version>4.4</version> <scope>runtime</scope> </dependency> </dependencies> <configuration> <proguardVersion>4.4</proguardVersion> </configuration> </plugin> </plugins> </pluginManagement> </build> <profiles> <profile> <id>release</id> <activation> <property> <name>performRelease</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <groupId>com.jayway.maven.plugins.android.generation2</groupId> <artifactId>android-maven-plugin</artifactId> <version>${android-plugin}</version> <configuration> <release>true</release> </configuration> </plugin> <plugin> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>enforce-signing-properties</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireProperty> <property>sign.keystore</property> <message>The 'sign.keystore' property is missing. It must contain the path to the keystore used to sign the application. </message> </requireProperty> <requireFilesExist> <files> <file>${sign.keystore}</file> </files> <message>The 'sign.keystore' property does not point to a file. It must contain the path to the keystore used to sign the application. </message> </requireFilesExist> <requireProperty> <property>sign.alias</property> <message>The 'sign.alias' property is missing. It must contain the key alias used to sign the application. </message> </requireProperty> <requireProperty> <property>sign.storepass</property> <message>The 'sign.storepass' property is missing. It must contain the password of the keystore used to sign the application. </message> </requireProperty> <requireProperty> <property>sign.keypass</property> <message>The 'sign.keypass' property is missing. It must contain the password of the key used to sign the application. </message> </requireProperty> </rules> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> <profile> <id>linux</id> <activation> <os> <family>unix</family> </os> </activation> <properties> <rt.jar.path>${java.home}/jre/lib/rt.jar</rt.jar.path> <jsse.jar.path>${java.home}/jre/lib/jsse.jar</jsse.jar.path> </properties> </profile> <!-- mac profile has to be after unix since running on mac will trigger both --> <profile> <id>mac</id> <activation> <os> <family>mac</family> </os> </activation> <properties> <!-- absolute path --> <!--<rt.jar.path>/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar</rt.jar.path> --> <!-- or with JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/ --> <rt.jar.path>${java.home}/../Classes/classes.jar</rt.jar.path> <jsse.jar.path>${java.home}/../Classes/jsse.jar</jsse.jar.path> </properties> </profile> <profile> <id>windows</id> <activation> <os> <family>windows</family> </os> </activation> <properties> <rt.jar.path>${java.home}/jre/lib/rt.jar</rt.jar.path> <jsse.jar.path>${java.home}/jre/lib/jsse.jar</jsse.jar.path> </properties> </profile> </profiles> 

Editar: actualizado pom. Editar: archivo de registro cargado

Bueno … En tu configuración de maven-processor-plugin estás usando el nombre de paquete antiguo para el procesador AA (es decir: com.googlecode.androidannotations.AndroidAnnotationProcessor ).

Como usted está utilizando el 3.0-SNAPSHOT, usted debe modificarlo para utilizar el nuevo: org.androidannotations.AndroidAnnotationProcessor

Además, no estoy seguro de que realmente necesite este complemento para que AA funcione.

Parece que el problema fue causado por una dependencia que no se resolvió.

Al principio Maven ni siquiera reportó esta dependencia que faltaba, hasta que empecé a quitar cosas de mi pom que había agregado en un intento de resolver este problema.

Ahora, lo que explica que la dependencia no se resolvió automáticamente, es el hecho de que no existe tal artefacto en el repositorio central de maven.

Como tal, he añadido el siguiente repositorio:

 <repositories> <!-- For developing with Android ROME Feed Reader --> <repository> <id>android-rome-feed-reader-repository</id> <name>Android ROME Feed Reader Repository</name> <url>https://android-rome-feed-reader.googlecode.com/svn/maven2/releases</url> </repository> </repositories> 

Resultando en que la dependencia 'oculta' se está resolviendo.

Esta dependencia parece ser necesaria

  <!-- Needed for androidannotations REST interface--> <dependency> <groupId>org.springframework.android</groupId> <artifactId>spring-android-rest-template</artifactId> <version>${spring-android-version}</version> </dependency> 

Documentos de primavera informan que esta 'dependencia oculta' de la que estamos hablando es necesaria para el soporte de feed RSS y Atom por la plantilla restante.

Lo que hizo esto aún más extraño es que la actividad inicial anotada por AA se creó y se resolvió bien. Mientras no me refiero a una clase generada, por ejemplo, para la navegación, entonces se compilar y ejecutar. Desde el momento en que traté de usar un código de clase en código, sin embargo, siguió por este camino.

Espero que esto ayude !

  • AndroidAnnotations no puede encontrar la clase de símbolo
  • Android Eclipse - No se puede ver la opción de procesamiento de anotaciones
  • ¿Por qué el valor del atributo de anotación Rest.rootUrl debe ser una expresión constante?
  • Configuración de Android Annotations v3.0.1 con Android Studio (Beta) 0.8.4
  • Android @Intdef para banderas cómo usarlo
  • Gradle con java 8 para retrolambda - Android no puede encontrar anotaciones TargetApi
  • Cuando aplico AspectJ al proyecto de Android con Androidannotations no funciona
  • Rest Client con AndroidAnnotations - "no HttpMessageConverter adecuado ..."
  • Anotaciones de importación dando error en limpio
  • Adición de argumentos a AndroidAnnotation beans inyectados
  • Anotaciones de Android ClassCastException typeElement
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.