我知道这不是Maven背后的想法,但是:
我想在progect目录中有一个带有相对路径的本地maven repo(.m2)。
有什么方法可以让我的pom做到这一点吗?还有更好的选择吗?
所以,基本上我想要的不是依赖任何外部存储库。
谢谢你的帮助:)
PS1 - 我是一个java noob(这里是c / c ++)和一个总maven
PS2 - maven安装dir / conf上的settings.xml文件有一个localRepository元素,但我相信我不能在那里有一个相对的补丁。此外,这不会与progect相关联,而是与安装了maven的框相关联。
答案 0 :(得分:4)
请注意,在pom.xml中,您可以将依赖项引用设置为存储在文件系统中的特定jar文件的位置,假设您在项目根文件夹下有一个子文件夹lib,其中包含所有jar库:
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/commons-logging-1.0.4.jar</systemPath>
</dependency>
通过这样做,groupId,artifactId和版本变得毫无意义。根据我自己的经验,我看到了一个oracle项目,之前有许多自定义的jar,其他的不是通过在线maven存储库提供的,丑陋但可行。
答案 1 :(得分:0)
我想在progect中有一个本地maven repo(.m2) 具有相对路径的目录。有什么方法可以让我的pom做 此?
是的,有一种方法:您可以通过在$ M2_HOME \ conf \ setting.xml中指定来指定本地仓库的路径
但是,如果您(或其他开发人员)使用多个项目,这种方法确实不太好。
有更好的选择吗?
是的,有一个更好的选择:)您可以在本地maven存储库中导入任何jar,这样您就不会依赖maven central repo,也不会被迫在项目中存储本地存储库。查看这篇文章How To Include Custom Library Into Maven Local Repository?,了解如何操作。
使用这种方法,您可以在项目中存储所有必需的第三方罐子以及将罐子导入本地仓库的shell /批处理脚本。开发人员只需执行脚本即可将依赖项导入本地仓库,而不是修改maven设置以使用来自某个特定位置(来自项目)的本地仓库。