在maven项目中嵌入本地jar文件

时间:2013-06-23 13:51:09

标签: java eclipse maven

我有一些来自非maven项目的本地jar文件,我希望将其包含在基于maven的eclipse项目中。

这些jar文件正在经历很多变化,因为我和我的项目伙伴试图“修复”它们,所以我不想将它们上传到存储库以避免制作这个非maven项目的maven版本这是可能的。

当然,jar文件需要嵌入到生成的部署jar中。我们在使用Ant之前做了这个,让我们指定应该包含那些jar文件。

你怎么在maven做同样的事情?考虑到我们确实有maven依赖项,它们都可以正常工作,并且在部署中不需要。我见过的一些答案不允许这个要求。

这是我的一次尝试 - 问题是jar没有嵌入:

<dependency>
    <groupId>se.krka.kahlua</groupId>
    <artifactId>kahlua-core</artifactId>
    <version>5.1_2.1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/kahlua-5.1_2.1.0-core.jar</systemPath>
</dependency>

2 个答案:

答案 0 :(得分:2)

系统路径是一个非常糟糕的主意。当其他人检查你的项目时,他不能再建造它了。 (我总是在许多公司看到这样的废话)。正确的解决方案是将jar安装到本地存储库中:

  

$ mvn install:install-file -Dfile = [JAR NAME] -DgroupId = [GROUPID OF   JAR] -DartifactId = [ARAR的JAR] -Dversion = [JAR的版本]   -Dpackaging =罐

在您的项目中,您只需在将jar安装到本地存储库后就像往常一样添加依赖项。

<dependency>
    <groupId>[GROUPID OF JAR]</groupId>
    <artifactId>[ARTIFACT OF JAR]</artifactId>
    <version>[VERSION OF JAR]</version>
</dependency>

答案 1 :(得分:1)

您可以使用maven-install-plugin将kahlua-5.1_2.1.0-core.jar安装到本地存储库中,然后此依赖项将与其他依赖项一样,请参阅http://maven.apache.org/plugins/maven-install-plugin/usage.html。或者在与好友共享的位置创建一个远程存储库,并让他在每次更改它时将maven-deploy-plugin:deploy-file(http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html)上传到他的jar中,并将此存储库添加到您的pom中。如果此jar经常更改,您可以使用SNAPSHOT版本