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

时间:2011-11-26 00:03:05

标签: java maven jar

我对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-pluginhttp://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应用程序,我没有看到它的文档。所以我没有追求这些线索。

在运行jre/lib/ext时,最简单的方法是让编译器在sdklib.jar文件夹中查找mvn package文件。但也许这不是要走的路。或者也许我可以对pom.xml进行简单的更改,这会导致编译器找到sdklib.jar。我查看了http://maven.apache.org/pom.html#Build_Settings处的pom文档,但没有看到这样做的方法。无论如何,我确信至少有一个解决方案;我还不知道(还)。

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

1 个答案:

答案 0 :(得分: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存储库中没有的库?

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