Kann nicht zum erstellen von android-Projekt mit maven (android-maven-plugin)
Seltsames Verhalten, manchmal kann ich mein Projekt-Paket, die meisten der Zeit, die ich nicht kann.
Das problem tritt in android:dex
:
$ mvn clean android:dex
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Test 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.3:clean (default-clean) @ test ---
[INFO] Deleting file set: /home/danny/workspace/test/target (included: [**], excluded: [])
[INFO]
[INFO] --- android-maven-plugin:3.3.2:dex (default-cli) @ test ---
[INFO] /usr/lib/jvm/java-6-sun-1.6.0.26/jre/bin/java [-Xmx1024M, -jar, /home/danny/.bin/android-sdk-linux/platform-tools/lib/dx.jar, --dex, --output=/home/danny/workspace/test/target/classes.dex, /home/danny/workspace/test/target/classes]
[INFO]
[INFO] UNEXPECTED TOP-LEVEL EXCEPTION:
[INFO] java.lang.RuntimeException: /home/danny/workspace/test/target/classes: file not found
[INFO] at com.android.dx.util.FileUtils.readFile(FileUtils.java:55)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:134)
[INFO] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[INFO] at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[INFO] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[INFO] at com.android.dx.command.dexer.Main.run(Main.java:206)
[INFO] at com.android.dx.command.dexer.Main.main(Main.java:174)
[INFO] at com.android.dx.command.Main.main(Main.java:91)
[INFO] 1 error; aborting
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.914s
[INFO] Finished at: Sun Oct 07 20:17:03 CEST 2012
[INFO] Final Memory: 7M/88M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.3.2:dex (default-cli) on project test: MojoExecutionException: ANDROID-040-001: Could not execute: Command = /bin/sh -c cd /home/danny/workspace/test && /usr/lib/jvm/java-6-sun-1.6.0.26/jre/bin/java -Xmx1024M -jar /home/danny/.bin/android-sdk-linux/platform-tools/lib/dx.jar --dex --output=/home/danny/workspace/test/target/classes.dex /home/danny/workspace/test/target/classes, Result = 1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Ich kann nicht finden alle Informationen auf dieser...
Meine pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>apk</packaging>
<artifactId>test</artifactId>
<groupId>com.example</groupId>
<name>Test</name>
<version>0.0.1</version>
<dependencies>
<dependency>
<artifactId>android</artifactId>
<groupId>com.google.android</groupId>
<scope>provided</scope>
<version>2.2.1</version>
</dependency>
<dependency>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
<scope>test</scope>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<assetsDirectory>src/main/assets</assetsDirectory>
<resourceDirectory>src/main/resources</resourceDirectory>
<sdk>
<platform>8</platform>
</sdk>
</configuration>
<extensions>true</extensions>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
</project>
BEARBEITEN
Läuft mvn package
Ergebnisse in:
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Test 0.0.1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- android-maven-plugin:3.3.2:generate-sources (default-generate-sources) @ test ---
[INFO] ANDROID-904-002: Found aidl files: Count = 0
[INFO] ANDROID-904-002: Found aidl files: Count = 0
[INFO] /home/danny/.bin/android-sdk-linux/platform-tools/aapt [package, -m, -J, /home/danny/workspace/test/target/generated-sources/r, -M, /home/danny/workspace/test/AndroidManifest.xml, -S, /home/danny/workspace/test/src/main/resources, --auto-add-overlay, -A, /home/danny/workspace/test/src/main/assets, -I, /home/danny/.bin/android-sdk-linux/platforms/android-8/android.jar]
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 8 resources
[INFO] skip non existing resourceDirectory /home/danny/workspace/test/target/generated-sources/extracted-dependencies/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ test ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 3 source files to /home/danny/workspace/test/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/danny/workspace/test/src/main/java/com/example/test/gui/MainActivity.java:[17,18] package R does not exist
[ERROR] /home/danny/workspace/test/src/main/java/com/example/test/gui/MainActivity.java:[26,29] package R does not exist
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.960s
[INFO] Finished at: Sun Oct 07 22:40:35 CEST 2012
[INFO] Final Memory: 13M/86M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project test: Compilation failure: Compilation failure:
[ERROR] /home/danny/workspace/test/src/main/java/com/example/test/gui/MainActivity.java:[17,18] package R does not exist
[ERROR] /home/danny/workspace/test/src/main/java/com/example/test/gui/MainActivity.java:[26,29] package R does not exist
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
package R does not exist
ist hoch, weil dernon existing resourceDirectory /home/danny/workspace/test/target/generated-sources/extracted-dependencies/src/main/resources
. Sie sind nicht mit Ressource-Filterung korrekt. Überprüfen Sie heraus die Antwort hier, um zu sehen, wie Sie setup-Ressource-Filterung in pom.xml. Oder wenn Sie nicht beabsichtigen, die Ressourcen verwenden, filtern, ändern Sie nicht die Standard - <assetsDirectory> und <resourceDirectory> in der android-maven-plugin-Konfiguration.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich kann Ihnen sagen, dass, basierend auf diesem Protokoll, Ihr generator ist das löschen aller Dateien in einem Ordner nach rechts, bevor es versucht dex das Ordner - also die dex scheitert, da es nichts gibt. Allerdings habe ich keine Idee, warum dies geschieht, aber ich kann nicht sehen, dass Sie aufgerufen wird das maven-clean-plugin irgendwo. Ich habe ähnliche Probleme passieren, wo builds funktionieren, wenn Sie Anruf
mvn clean
, dannmvn install
, aber wird NICHT funktionieren, wenn Sie Anrufmvn clean install
; allerdings habe ich nur gesehen, das im großen custom builds, wo die Menschen sind dem Aufruf der clean-plugin selbst. Es ist jedoch möglich, es kann auch helfen, Ihre situation-auch wenn ich nicht sehen kann, was es verursacht...EDIT: Sorry, es ist noch zu früh für mich. Das problem ist nicht das reinigen, das problem ist, dass der compiler plugin wird nie ausgeführt. Nach dem reinigen werden Sie in der Regel haben alle Ressourcen, die Sie benötigen, immer generiert, dann ist Ihr code wird kompiliert, und DANN die Klassen erhalten dexed. Sie sind nie zu erstellen .die class-Dateien, so gibt es nichts zu dex.
package R does not exist
.mvn android:generate-sources
nicht geholfen...mvn generate-sources
?mvn android:dex
? Was passiert, wenn Sie geben Sie einfachmvn package
?mvn android:dex
Beim laufenmvn package
ich bin immerpackage R does not exist
.mvn generate-sources
funktioniert, aber läuftmvn package
dann die Ergebnisse in der gleichenpackage R does not exist
.mvn package
odermvn install
) und es wird automatisch ausgeführt, alle prereqs. Man sieht die Gefahren nicht, dies zu tun in deinem log oben - es lief eine saubere rechts, bevor es versucht, dex! Wenn Sie Fehler erhalten, wenn Sie Sie ausführenmvn package
dann gibt es möglicherweise ein problem mit Ihrem code. Was passiert ingenerate-sources
?mvn package
?generate-sources
generiertR.java
undBuildConfig.java
imtarget/generated-sources/r/com/example/test
.R.java
verwendetpackage com.example.test
undMainActivity.java
verwendetpackage com.example.test.gui
.Den generierten
R
- Datei die package-Deklarationcom.example.test
(das ist die GUI von meinem Projekt) und ich versuchte, darauf zuzugreifen, die in der Klassecom.example.test.gui.MainActivity
. So musste ich importierencom.example.test.R
ausdrücklich.