1

我有一些来自非 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>
4

2 回答 2

2

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

$ mvn install:install-file -Dfile=[JAR NAME] -DgroupId=[GROUPID OF JAR] -DartifactId=[ARTIFACT OF JAR] -Dversion=[VERSION OF JAR] -Dpackaging=jar

在您的项目中,您只需在将 jar 安装到本地存储库后照常添加依赖项即可。

<dependency>
    <groupId>[GROUPID OF JAR]</groupId>
    <artifactId>[ARTIFACT OF JAR]</artifactId>
    <version>[VERSION OF JAR]</version>
</dependency>
于 2013-06-23T14:26:57.610 回答
1

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

于 2013-06-23T14:03:41.973 回答