2011-11-26 24 views
5

我對java有點新,對於maven也很新穎。我可能會用一些不完善的術語。用外部jar文件編譯一個maven項目(這不是一個maven工件)

當我開發我正在使用maven構建的項目時,因爲我需要的類不是Java核心語言的一部分,所以我已經爲我的pom.xml添加了合適的<dependency>部分(通常從mvnbrowser.com沒有我真正理解它),我已經能夠使用我想要的類。很棒。

現在我遇到了一個我想使用的java類,它顯然在maven工件中不可用。它是與android SDK一起發佈的com.android.sdklib.build.ApkBuilder。我寫了一個獨立的Java程序來讓我的代碼工作;我用javac而不是maven編譯它,並且工作正常。對於這一點,我把它包含我想要的類,sdklib.jar,到我jre/lib/ext目錄中的jar文件(/usr/local/jdk1.6.0/jre/lib/ext在FreeBSD機器上),我import com.android.sdklib.build.ApkBuilder行編譯罰款,並可以參考我ApkBuilder並沒有問題,使用它。

現在,當我複製我的工作代碼到我的Maven項目,並試圖建立與mvn project,我得到導入行package com.android.sdklib.build does not exist錯誤,cannot find symbol: class ApkBuilder錯誤,我指的ApkBuilder

環顧網絡,我發現android-maven-plugin在這裏:http://code.google.com/p/maven-android-plugin/。它在這裏將我稱爲maven-android-sdk-deployerhttps://github.com/mosabua/maven-android-sdk-deployer。這些線索一開始聽起來很有希望,但據我所知,它們的目的是使用maven開發android應用程序,這不是我想要做的。我只想要我的java程序來操縱android apk文件,但我的java程序本身不能在android設備上運行。此外,android SDK是用於linux,而不是我使用的FreeBSD,所以我無法按照maven-android-sdk-deployer的安裝說明進行操作。我還發現了一個名爲maven-apkbuilder-plugin的工件,但這似乎也是爲了創建android應用程序的目的,我沒有看到它的文檔。所以我沒有追求這些線索。

在運行mvn package時,似乎最簡單的事情就是讓編譯器在我的jre/lib/ext文件夾中查找sdklib.jar文件。但也許這不是要走的路。或者,我可以對我的pom.xml進行簡單的更改,這會使編譯器找到sdklib.jar。我查看了http://maven.apache.org/pom.html#Build_Settings的pom文檔,但沒有看到辦法做到這一點。無論如何,我確信至少有一個解決方案;我只是不知道它(還)。

我有什麼選擇?在我的Maven項目中使用ApkBuilder類的最好方法是什麼?我應該閱讀哪些內容才能讓我自己回答這個問題?謝謝!!

+0

你已經正確識別了問題的源頭 - JAR從類路徑中丟失。強制餵食'jre/lib/ext'並不理想。嘗試研究一些Maven + Android開發工具(我對Android開發一無所知)。 M2e-Android(http://rgladwell.github.com/m2e-android/)似乎很有趣。它聲稱「它將Maven依賴管理的力量帶入ADT」 –

回答

8

如果您只是想引用jar,最簡單的解決方案可能是手動將jar添加到本地存儲庫。詳情請參閱here

果殼:

mvn install:install-file  \ 
    -Dfile=<path-to-file>  \ 
    -DgroupId=<group-id>  \ 
    -DartifactId=<artifact-id> \ 
    -Dversion=<version>  \ 
    -Dpackaging=jar 

可能任何你想要的group-idartifact-idversion,但他們應該是類似的東西你期望什麼,如果它在回購可使用。

由於您實際上並未創建Android項目,因此可能就足夠了。


以下是我會問這個問題。

如何在我的Maven構建中使用Maven存儲庫中不可用的庫?

(巧合的是,那是,和更短的變化,應該調出你「應該」讀了聯繫,回答你的最後一個問題:)

相關問題