我对java有些新手,对maven来说很新。我可能会使用一些不完整的术语。
当我开发我的项目时,我正在使用maven来构建,因为我需要的是不属于核心java语言的类,我在{{{{{}}中添加了一个适当的<dependency>
部分1}}(通常是从mvnbrowser.com复制而我没有真正理解它),而且我已经能够使用我想要的类了。效果很好。
现在我遇到了一个我想要使用的java类,它显然在maven工件中不可用。它是pom.xml
随android SDK一起发布的。我写了一个独立的java程序来让我的代码工作;我使用com.android.sdklib.build.ApkBuilder
而不是使用maven编译它,并且工作正常。为此,我将包含我想要的类的jar文件javac
放入我的sdklib.jar
目录(FreeBSD机器上的jre/lib/ext
),并编译我的/usr/local/jdk1.6.0/jre/lib/ext
行很好,我可以参考import com.android.sdklib.build.ApkBuilder
并毫无问题地使用它。
现在,当我将我的工作代码复制到我的maven项目中,并尝试使用ApkBuilder
进行构建时,我在导入行上出现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-deployer
:https://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应用程序,我没有看到它的文档。所以我没有追求这些线索。
在运行jre/lib/ext
时,最简单的方法是让编译器在sdklib.jar
文件夹中查找mvn package
文件。但也许这不是要走的路。或者也许我可以对pom.xml
进行简单的更改,这会导致编译器找到sdklib.jar
。我查看了http://maven.apache.org/pom.html#Build_Settings处的pom文档,但没有看到这样做的方法。无论如何,我确信至少有一个解决方案;我还不知道(还)。
我有什么选择?在我的maven构建的项目中使用ApkBuilder
类的最佳方法是什么?我应该阅读什么才能让我自己回答这个问题?谢谢!
答案 0 :(得分:8)
如果您只是尝试引用jar,最简单的解决方案可能是手动将jar添加到本地存储库。有关详细信息,请参阅here。
果壳:
mvn install:install-file \
-Dfile=<path-to-file> \
-DgroupId=<group-id> \
-DartifactId=<artifact-id> \
-Dversion=<version> \
-Dpackaging=jar
你可以使用group-id
,artifact-id
和version
所需的任何内容,但它们应该是类似于您期望的内容在回购中可用。
由于您实际上并未创建Android项目,因此这可能就足够了。
以下是我会问这个问题的方法。
如何在Maven构建中使用Maven存储库中没有的库?
(巧合的是,那个,以及更短的变化,应该提出你应该阅读的链接,回答你的上一个问题:)