2013-08-20 44 views
0

我們的團隊決定在我們相當大的項目(300班)中使用Maven,我是新手。到目前爲止,我正在編寫pom.xml文件。我寫了所有的庫到<dependency>,但不知道接下來要做什麼。我的pom.xml:爲Android大項目編寫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 

什麼問題?

+1

可以有很多原因,你應該檢查「AccountService」中哪些符號未知。如果您使用的是Eclipse,則應該在控制檯窗口中有一個標記,指出問題的位置。 – nyyrikki

回答

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項目,你有一個項目的大規模mammonth,我會建議你使用原型來建立一個新的Maven化項目,確保原型包含的「Hello world」類型項目運行。

然後,你很高興在你的IDE和控制檯中工作,然後複製你的主項目並重構原型以適合你的項目。

+0

是的,它不完整,但不知道要添加什麼。我已經測試了一些小項目,這一切都奏效了。所以現在我必須用這個寶貴的時間來挑戰自己。感謝您的鏈接,將檢查它。 –

1

我懷疑在插入你的pom之後,你並沒有將你的Eclipse項目變成maven化的。

右鍵單擊項目基地 - >配置 - >轉換爲Maven項目

編輯

其他可能的原因:

1)你沒有把你的srources在

  • src/main/java
  • src/test/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> 
+0

我以前做過+現在我更新了,仍然不起作用 –