2012-01-12 76 views
2

我知道,这是不是背后Maven的想法,但是:
Maven的localRepository

我想有一个本地Maven回购(.m2目录下),使用相对路径的progect目录内。 有什么办法可以让我的POM做到这一点?有更好的选择吗?

所以,基本上我想要的不是依赖任何外部存储库。

THX对您有所帮助:)

PS1 - 我还算是一个java小白(C/C++在这里),共行家
PS2 - 在Maven安装目录的settings.xml文件/ conf有一个localRepository元素,但我相信我不能在那里有相关的补丁。此外,这不会链接到progect,而是链接到maven安装的位置。

+0

你可以尝试在命令行(-DlocalRepository)或你的pom( ...)上设置localRepository,尽管我怀疑最后一个会起作用。你想达到什么目的?由于一个模块无法找到其(仅仅构建的)依赖关系,因此POM级存储库可能会破坏多模块构建。通常,人们使用localRepository设置来防止潜在的从一个构建环境到另一个构建环境的“污染” - 这很好,但是这是在mvn调用级完成的,而不是在pom级。 – ptyx 2012-01-12 21:57:59

回答

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仓库,丑陋但可行。

+0

我相信这就是我要找的!Thx – Uglakh 2012-01-13 00:26:19

+0

@Uglakh,如果答案有帮助,考虑投票或接受它:) – yorkw 2012-01-13 00:35:18

+0

不能投票(这是我得到的是一个潜伏者,没有足够的代表)但我已经接受thx @yorkw – Uglakh 2012-01-13 10:18:07

0

我想在一个相对路径的progect 目录中有一个本地maven回购(.m2)。有没有什么办法可以让我的朋友做 这个?

是的,有一种方法:你可以通过在$ M2_HOME \的conf \ Setting.xml的

指定指定路径到本地回购,但这种做法是不是真的好,如果你(或其他开发人员)工作有多个项目。

有没有更好的选择?

是的,有一个更好的选择:)你可以导入任何广口瓶在你的本地仓库,所以你不会依赖于行家中央回购,你会不会被迫来存储您的项目中的本地仓库。查看这篇小文章How To Include Custom Library Into Maven Local Repository?以了解如何做到这一点。

使用这种方法,您可以将所有必需的第三方罐子存储在您的项目中,以及将罐子导入本地仓库的shell /批处理脚本。开发人员只需执行脚本即可将依赖项导入本地回购站,而不用修改maven设置,以便从某个特定位置(从项目中)使用本地回购站。