0

我们的团队决定在我们相当大的项目(300 个类)中使用 Maven,而我是新手。到目前为止,我正在编写 pom.xml 文件。我把所有的库都写进了<dependency>,但不知道接下来要做什么。我的 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>
<groupId>com.asd.android.asd</groupId>
<artifactId>asd</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>asd</name>

<dependencies>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>2.1.2</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>2.0-no_aop</version>
    </dependency>
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>support-v4</artifactId>
        <version>r7</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>20030203.000550</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>14.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.2.5</version>
    </dependency>
    <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>2.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.roboguice</groupId>
        <artifactId>roboguice</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>oauth.signpost</groupId>
        <artifactId>signpost-commonshttp4</artifactId>
        <version>1.2.1.2</version>
    </dependency>
    <dependency>
        <groupId>oauth.signpost</groupId>
        <artifactId>signpost-core</artifactId>
        <version>1.2.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.twitter4j</groupId>
        <artifactId>twitter4j-core</artifactId>
        <version>2.1.11</version>
    </dependency>

</dependencies>

<build>
    <finalName>${project.artifactId}</finalName>
    <sourceDirectory>src</sourceDirectory>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.asd.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <version>3.1.1</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </pluginManagement>

</build>

对于每一堂课,我都会遇到这样的错误:

  [ERROR]  interface AccountService
/Users/asd/Documents/asd/asd-android/asd/src/com/asd/android/asd/api/ws/AccountService.java:[46,25] error: cannot find symbol

有什么问题?

4

2 回答 2

1

POM 对我来说看起来不完整,android-archetype POM 还配置了 android-maven-plugin,同时指定了 SDK 元素和 Emulator 元素。看这里,

https://github.com/akquinet/android-archetypes/blob/master/android-quickstart/src/main/resources/archetype-resources/pom.xml

如果您是第一次做一个 android 项目,并且您有一个庞大的项目,我建议您使用原型构建一个新的 mavenized 项目,确保原型中包含的“Hello world”类型项目运行.

然后,你很高兴在你的 IDE 和控制台中工作,然后你复制你的主项目并重构原型以适应你的项目。

于 2013-08-20T14:27:45.437 回答
1

我怀疑你在插入你的 pom.xml 后没有对你的 Eclipse 项目进行 mavenized。

右键单击项目库 -> 配置 -> 转换为 Maven 项目

编辑

其他可能的原因:

1)你没有把你的资源放进去

  • 源/主/java
  • 源/测试/java

2)您的 pom 中某些字段丢失或不完整:

<packaging>apk</packaging>

在标题中:

<modelVersion>4.0.0</modelVersion>
<groupId>com.asd.android.asd</groupId>
<artifactId>asd</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>apk</packaging>
<name>asd</name>

建造:

  <build>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
        <extensions>true</extensions>
        <version>3.5.0</version>
        <configuration>
          <sdk>
            <!-- platform or api level (api level 4 = platform 1.6) -->
            <!-- platform or api level (api level 8 = platform 2.2) -->
            <!-- platform or api level (api level 16 = platform 4.1) -->
            <!-- platform or api level (api level 17 = platform 4.2) -->
            <platform>16</platform>
          </sdk>
        </configuration>
      </plugin>
    </plugins>
于 2013-08-20T14:29:09.727 回答