在pom.xml文件中设置Maven本地存储库位置?

时间:2018-08-04 14:37:49

标签: java maven

可以在settings.xml中设置Maven本地存储库:

<localRepository>${user.home}/.m2/repository</localRepository>

并且可以在命令行上设置Maven本地存储库:

mvn clean install -Dmaven.repo.local=repository

是否可以在pom.xml本身中指定?

注意:我想在pom.xml中指定一种方法,其中maven最初在其中搜索工件(默认情况下为~/.m2/repository),而maven通过mvn install安装工件(默认情况下) ,~/.m2/repository)。

2 个答案:

答案 0 :(得分:1)

根据Maven POM ReferenceGuide to using multiple repositories,您也可以在 select distinct th.thread_name as Topic_name, m.message_text, p.person_nickname as User_name, m.message_date as Date from message m inner join thread th on m.thread_id=th.thread_id inner join persion p on p.persion_id=m.persion_id order by message_date desc Limit 3 中指定存储库。

  

可以使用两种不同的方法来指定使用多个存储库。第一种方法是在POM中指定要使用的存储库

根据Introduction to repositories,您可以在 select distinct TOP(3) th.thread_name as Topic_name, m.message_text, p.person_nickname as User_name, m.message_date as Date from message m inner join thread th on m.thread_id=th.thread_id inner join persion p on p.persion_id=m.persion_id order by message_date desc 中使用pom.xml协议。

  

远程存储库是指任何其他类型的存储库,可以通过各种协议(例如file://和http://)进行访问。

因此,以下工作有效:

file://

编辑:

根据您的评论和编辑,您需要覆盖<url>中的默认存储库和Maven主目录。

我找到了topic about disabling central repository,并尝试了答案,但是Maven仍使用<project> ... <repositories> <repository> <id>example-repo</id> <name>Example Repository</name> <url>file://path/to/your/local/repository</url> </repository> </repositories> </project> 中的值。 This answer在另一个线程中解释了原因:

  

pom.xml允许您覆盖settings.xml中的定义,而不是相反。

因此似乎无法覆盖settings.xml中的默认机制,Maven将在pom.xml中配置的存储库中搜索依赖项,并将安装到该文件中指定的Maven主页中。

答案 1 :(得分:1)

如果问题是每次运行maven时都必须编写选项,则可以使用自版本3.3.1起可用的功能,该功能允许您在项目(或模块的父项目)中设置命令行选项。阅读@Brice的答案:https://stackoverflow.com/a/48583079

因此,请牢记此功能,可以通过设置新的settings.xml并指向<localRepository>指向所需位置并在项目中使用maven.config来获得类似的结果。让Maven使用新的settings.xml,顺便说一下,它可以在您想要的任何地方。