使用外部jar文件(不在maven工件中)编译maven项目

Ada*_*ler 6 java jar maven

我对java很新,对maven来说很新.我可能会使用一些术语不完美.

当我开发我的项目时,我正在使用maven来构建,因为我需要的类不是核心java语言的一部分,我已经<dependency>为我添加了一个适当的部分pom.xml(通常是从mvnbrowser.com复制而不是我真的理解它很好),我已经能够使用我想要的类.效果很好.

现在我遇到了一个我想要使用的java类,它显然在maven工件中不可用.它com.android.sdklib.build.ApkBuilder是随android SDK一起发布的.我写了一个独立的java程序来让我的代码工作; 我使用javac而不是使用maven 编译它,这样可以正常工作.为此,我将包含我想要的类的jar文件sdklib.jar放入我的jre/lib/ext目录(/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-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文档,但没有看到这样做的方法.无论如何,我确信至少有一个解决方案; 我还不知道(还).

我有什么选择?ApkBuilder在我的maven构建的项目中使用该类的最佳方法是什么?我应该阅读什么才能让我自己回答这个问题?谢谢!!

Dav*_*ton 8

如果您只是尝试引用jar,最简单的解决方案可能是手动将jar添加到本地存储库.详情请见此处.

概括地说:

mvn install:install-file       \
    -Dfile=<path-to-file>      \
    -DgroupId=<group-id>       \
    -DartifactId=<artifact-id> \
    -Dversion=<version>        \
    -Dpackaging=jar
Run Code Online (Sandbox Code Playgroud)

可以使用任何你想要的group-id,artifact-idversion,但他们应该是类似的东西你期望什么,如果它在回购可用.

由于您实际上并未创建Android项目,因此这可能就足够了.


以下是我会问这个问题的方法.

如何在Maven构建中使用Maven存储库中没有的库?

(巧合的是,那个,以及更短的变化,应该提出你应该阅读的链接,回答你的最后一个问题:)