无法使用maven(android maven插件)构建android项目

无法使用maven(android maven插件)构建android项目,android,eclipse,maven,pom.xml,Android,Eclipse,Maven,Pom.xml,奇怪的行为,有时我可以打包我的项目,大多数时候我不能。 问题发生在android:dex中: $ mvn clean android:dex [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------

奇怪的行为,有时我可以打包我的项目,大多数时候我不能。 问题发生在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
我找不到关于这个的任何信息。。。 My 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>

好的,我可以告诉你,根据这个日志,你的构建器在尝试对文件夹进行索引之前正在删除文件夹中的所有文件-因此,索引失败,因为那里什么都没有。但是,我不知道为什么会发生这种情况,因为我看不到您在任何地方调用了maven clean插件。我看到过类似的问题,如果调用
mvn-clean
,构建工作,然后调用
mvn-install
,但如果调用
mvn-clean-install
,构建工作将不工作;然而,我只在大型定制版本中看到过这种情况,人们自己也在调用clean插件。然而,这也可能对你的情况有所帮助,尽管我看不出是什么原因造成的


编辑:对不起,现在对我来说还早。问题不是干净,问题是编译器插件从未运行过。清理之后,通常会生成所需的任何资源,然后编译代码,然后对类进行索引。您永远不会生成.class文件,因此不需要对其进行索引

好吧,我可以告诉您,根据该日志,构建器在尝试对文件夹进行索引之前,正在删除文件夹中的所有文件-因此,索引失败,因为那里什么都没有。但是,我不知道为什么会发生这种情况,因为我看不到您在任何地方调用了maven clean插件。我看到过类似的问题,如果调用
mvn-clean
,构建工作,然后调用
mvn-install
,但如果调用
mvn-clean-install
,构建工作将不工作;然而,我只在大型定制版本中看到过这种情况,人们自己也在调用clean插件。然而,这也可能对你的情况有所帮助,尽管我看不出是什么原因造成的


编辑:对不起,现在对我来说还早。问题不是干净,问题是编译器插件从未运行过。清理之后,通常会生成所需的任何资源,然后编译代码,然后对类进行索引。您永远不会生成.class文件,因此不需要对其进行索引

生成的
R
文件使用了包声明
com.example.test
(这是我项目的groupId),我试图在类
com.example.test.gui.MainActivity
中访问它。因此,我需要显式导入
com.example.test.R

生成的
R
文件使用包声明
com.example.test
(这是我项目的组ID),我尝试在类
com.example.test.gui.MainActivity
中访问它。所以我需要显式地导入
com.example.test.R

我认为android:apk也在运行构建功能之前。。。试图构建我得到的java文件
包R不存在
<代码>mvn android:generate sources没有帮助…R文件是由aapt生成的,它应该在其他任何东西之前自动运行。。。基本的过程是在生成源代码期间创建R文件,然后在编译阶段编译类,然后对类进行索引,然后在打包阶段生成实际的APK。运行
mvn generate sources
时的输出是什么?请稍候,输入
mvn android:dex
时的上述输出是什么?当您只需键入
mvn package
时会发生什么情况?实际上,您可以使用运行
mvn package
时的日志输出更新您的帖子吗?如果目标/生成的源文件夹中确实有一个R.java文件,我不确定编译器插件为什么找不到它。R文件的包(您可以通过在文本编辑器中打开它来查看)是否与似乎看不到它的文件包相同?另外,它说有3个源文件,但只有两个文件有错误-第三个源文件能够成功引用R文件吗?我想android:apk以前也运行过构建的东西。。。试图构建我得到的java文件
包R不存在
<代码>mvn android:generate sources没有帮助…R文件是由aapt生成的,它应该在其他任何东西之前自动运行。。。基本的过程是在生成源代码期间创建R文件,然后在编译阶段编译类,然后对类进行索引,然后在打包阶段生成实际的APK。运行
mvn generate sources
时的输出是什么?请稍候,输入
mvn android:dex
时的上述输出是什么?当您只需键入
mvn package
时会发生什么情况?实际上,您可以使用运行
mvn package
时的日志输出更新您的帖子吗?如果目标/生成的源文件夹中确实有一个R.java文件,我不确定编译器插件为什么找不到它。R文件的包(您可以通过在文本编辑器中打开它来查看)是否与似乎看不到它的文件包相同?此外,它还表示有3个源文件,但只有两个文件有错误-第三个源文件是否能够成功引用R文件?
包R不存在
是因为
不存在resourceDirectory/home/danny/workspace/test/target/generated sources/extracted dependencies/src/main/resources
。您没有正确使用资源筛选。查看答案,了解如何在pom.xml中设置资源筛选。或者,如果您不打算使用资源筛选,请不要在android maven插件配置中修改默认值和。由于
不存在resourceDirectory/home/danny/workspace/te,包R不存在
$ 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