6

我正在尝试使用 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 没有经验,所以我相信我在这里遗漏了一些东西。

4

4 回答 4

3

R 类是在编译期间由您的 IDE 构建的。MAVEN 找不到 R 类,因为默认情况下可以在 build 文件夹下找到该类。你需要添加这样的东西

<sourceDirectory>build</sourceDirectory>
<outputDirectory>target</outputDirectory>

告诉 MAVEN 您在 build 文件夹下有一些资源文件,并且您想让它们可用于编译,因此将它们添加到目标文件夹下,该文件夹将位于您的项目下。

所以现在我有

build
  |----res
  |----src
src
  |----main
       |----java
       |----res 
target
于 2013-10-31T12:33:04.033 回答
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包属性,因此模块报告该错误,我自己按照生成命令和选择包名来解决这个问题。

于 2014-02-17T09:14:04.653 回答
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 文档以及示例

于 2013-10-21T14:39:47.923 回答
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>
于 2014-04-27T14:39:56.620 回答