我正在尝试使用Android应用程序设置MAVEN项目。 我有这个pom文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myproject</groupId>
<artifactId>userprofile</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>userprofile</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.1.1.4</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
并且在MAVEN编译期间我收到此错误(大约100次,即在我的方法中使用的次数)
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
src\main\java\com\myproject\userprofile\BaseActivity.java:[52,43] error: package R does not exist
Process finished with exit code 1
有关此错误的任何想法?在网络上,我要么找到关于类似错误输出的未解答的问题。我没有MAVEN的经验,所以我相信我在这里遗漏了一些东西。
答案 0 :(得分:3)
R class是在编译期间由IDE构建的。 MAVEN找不到R类,因为默认情况下可以在build文件夹下找到该类。你需要添加这样的东西
<sourceDirectory>build</sourceDirectory>
<outputDirectory>target</outputDirectory>
告诉MAVEN你在build文件夹下有一些资源文件,并且你想让它们可以编译,所以把它们添加到你项目下的目标文件夹下。
现在我有了
build
|----res
|----src
src
|----main
|----java
|----res
target
答案 1 :(得分:0)
快速浏览后,我相信你错过了build
元素。 Maven正在使用当前源构建项目,R
和其他gen
类尚未生成。至少你需要像(dependencies
标签之后):
<build>
<finalName>${project.artifactId}</finalName>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.7.0</version>
<extensions>true</extensions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<!-- platform or api level (api level 16 = platform 4.1)-->
<platform>16</platform>
</sdk>
</configuration>
</plugin>
</plugins>
</build>
此外,包装必须为apk
:
<packaging>apk</packaging>
我强烈建议您开始阅读Android Maven documentation以及samples。
答案 2 :(得分:0)
如果您修改了由 archetype:generate 生成的包名称,可能会发生此错误,对我来说,我使用android-quickstart生成模块结构:
mvn archetype:generate \
-DarchetypeArtifactId=android-quickstart \
-DarchetypeGroupId=de.akquinet.android.archetypes \
-DarchetypeVersion=1.0.11 \
-DgroupId=com.yy.android.gameLibs \
-DartifactId=sample
akquient建议我使用“com.yy.android.gameLibs”作为包名,我接受了,我编译这个模块成功并且工作了。之后,我将包名更改为“com.yy.android.sample”也改变了Androidmenifest.xml包属性,因此模块报告该错误,我自己跟回生成命令和选择包名来解决这个问题。 / p>
答案 3 :(得分:0)
将包装修改为apklib,如下所示:
<packaging>apklib</packaging>
并在pom.xml末尾添加构建目标,如下所示:
<dependencies>
<!--Android deps -->
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>4.0.1.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<sdk>
<platform>17</platform>
</sdk>
</configuration>
<extensions>true</extensions>
</plugin>
</plugins>
</build>