maven各種奇葩問題

轉自:http://www.cnblogs.com/sxdcgaq8080/p/5591778.html

問題1:Could not calculate build plan: Plugin org.apache... 不能成功創建maven項目

 

 

解決方法1:

http://repo1.maven.org/maven2這個中央倉庫地址已經被屏蔽了,不能訪問,所以maven用到的插件和jar下載失敗,且你的電腦上的本地倉庫.m2並沒有下載好maven的插件等,項目自然不能正常執行maven命令。解決方法,1.如果沒有私服(例如nexus),那麼就把‘另外電腦中‘的本地倉庫.m2目錄拷貝到你的電腦上,並在maven conf settings.xml裏面設置<localRepository>爲.m2目錄。2.有私服,就在settings.xml裏面配置nexus地址,從它上面下載。

 

問題2:

轉Maven project是生成的pom.xml文件錯誤——Unknown packaging:apk以及Failed to collect dependencies for xxx.xx.…….generation2:android-maven.plugin:3.5.3...

描述,因爲錯誤沒辦法重現了,所以也記不太清楚具體的錯誤內容,不過錯誤提示分別在<packaging>apk</packaging>和第一行處
解決辦法,添加本地庫支持,因爲中央庫的東西有時候連接不上獲取不了,所以我們使用本地的   <repositories>
      <repository>
          <id>my-internal-site</id>
          <url>file:///${env.HOME}/.m2/repository</url>
      </repository>
  </repositories>
也許是這個原因吧,我也不清楚,不過這樣的確不報錯了。
 
問題3:
 
pom.xml文件錯誤——Cannot read lifecycle mapping metadata for artifact……
描述,這個錯誤是在problems這個試圖裏看到的,指向pom.xml文件的第一行,網上查到的解決辦法是刪除~\.m2\repository這個文件夾,然後本地庫重新從中央庫下載
 
問題4:
 
執行命令mvn clean install出錯——could not found tool ‘aapt’
描述,SDK裏面aapt.exe是用來打包apk文件的,不過它的位置很詭異,api4是位於platforms文件夾的android-4文件夾下的tools文件夾裏,而api17則是位於build-tools的17.0.0文件夾下,Maven似乎在執行命令的時候會在pom.xml文件找platform屬性,如果是4,那麼就去對應的platforms文件夾的andoird-4文件夾下面找aapt.exe,但是如果是10,這是找不到的,因爲沒有android-10\tools\aapt.exe這個文件,所以當然報錯
解決辦法,我們需要手動拷貝,將build-tools\17.0.0下的所有內容拷貝到android-10\tools文件夾內(需要自己創建tools文件夾)。爲什麼用17.0.0下的aapt.exe,下面還會說到。
 
問題5:
 
執行命令mvn clean install出錯——MojoExecutionException: ANDROID-040-001: Could not execute: Command ……
描述,大致上就是說沒辦法執行一個aapt命令,類似於這樣的一個命令無法執行
D:\Android\Android_SDK\platforms\android-4\tools\aapt.exe package -m -J G:\工程文件\Eclipse3\aaa\target\generated-sources\r -M G:\工程文件\Eclipse3\aaa\AndroidManifest.xml -S G:\工程文件\Eclipse3\aaa\res --auto-add-overlay -A G:\工程文件\Eclipse3\aaa\assets -I D:\Android\Android_SDK\platforms\android-4\android.jar
我們單獨在控制檯執行這個命令,得到的輸出是“命令行太長”,我真無語了。
解決辦法,想辦法縮減文件夾的結構。。。。
 
問題6:
 
執行命令mvn clean install出錯——MojoExecutionException: ANDROID-040-001: Could not execute: Command ……
描述,命令縮減之後依然無法執行,不過這時候的命令是這樣的
D:\Android\Android_SDK\platforms\android-4\tools\aapt.exe package -f -M G:\a\aaa\AndroidManifest.xml -S G:\a\aaa\res --auto-add-overlay -A G:\a\aaa\target\generated-sources\combined-assets\assets -I D:\Android\Android_SDK\platforms\android-4\android.jar -F G:\a\aaa\target\aaa.ap_ --debug-mode
多了一個--debug-mode,我們單獨在控制檯執行這個命令,會發現提示顯示的是aapt不支持--debug-mode這個參數,尼瑪,簡直坑爹有沒有。然後我用了build-tools下面的aapt.exe發現可以使用這個參數,於是你明白了之前爲什麼我要拷貝17.0.0文件夾下的aapt.exe了
解決辦法,刪掉android-4下面的aapt相關文件,從17.0.0文件夾下拷貝東西過來。
 
問題7:
在Eclipse右鍵項目選擇Run as-maven install出錯——complier could not found,Perhaps you are running on a JRE rather than a JDK
描述,不是急的太清了,反正意思就是找不到編譯器,說我們可能使用安裝的jre運行而不是jdk裏面的jre運行。
解決辦法,window-Preferences-java-installed JREs,選擇add,找到自己的jdk路徑,確定之後選擇jdk,不要選擇jre
 
問題8:
在pom.xml添加dependency時出錯誤——Missing artifact……
描述,修改pom.xml並保存,maven就會去連接中央庫(可能是企業內部的)來更新本地庫,有時候網絡狀況不佳的時候會出現連接中央庫timeout,那麼此時就會出現missing artifact錯誤了
解決辦法,在.m2/repo...文件夾下面找到這個artifact的文件夾,刪掉,然後重新保存pom.xml,當然如果依然timeout,自己想辦法吧。

問題9:
no android sdk path could be found
描述,有時候maven沒辦法找到sdk的路徑,即使你配置了ANDROID_HOME環境變量,這時候需要在$HOME/.m2文件夾下創建setting.xml文件,向其中加入以下配置信息
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
<profiles> 
<profile> 
<id>android</id> 
<properties> 
<android.sdk.path> PATH / TO / THE / ANDROID / SDK </android.sdk.path> 
</properties> 
</profile> 
</profiles> 
<activeProfiles> 
<!--make the profile active all the time --> <activeProfile>android</activeProfile> </activeProfiles> 
</settings>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章