当前位置:  开发笔记 > 运维 > 正文

Maven - 将工件安装到工作空间中的本地存储库

如何解决《Maven-将工件安装到工作空间中的本地存储库》经验,为你挑选了1个好方法。

我想有一种方法,'mvn install'将文件放在我的源(checkout)根目录下的存储库文件夹中,同时使用来自〜/ .m2/repository的第三方依赖项.

所以在'mvn install'之后,布局是:

/work/project/
    repository
      com/example/foo-1.0.jar
      com/example/bar-1.0.jar
    foo
      src/main/java
    bar
      src/main/java

~/.m2/repository
    log4j/log4j/1.2/log4j-1.2.jar

(特别是/ work/project/repository不包含log4j)

在本质上,我正在寻找一种创建引用其他存储库的复合存储库的方法

我的目的是能够对同一个源进行多次检出并在每个检查上使用"install"在本地存储库中相互覆盖.多次检查可能是因为在cvs/svn中的不同分支上工作,但在我的情况下,这是由于在git中克隆主分支(在git中,每个克隆就像一个分支).我不喜欢每次结账时使用特殊版本/分类器或每次切换时重新安装(重建)所有内容的替代方案.



1> Pascal Thive..:

Maven可以搜索多个存储库(本地,远程,"假"远程)来解决依赖关系,但是只有一个本地存储库可以在其中安装工件install.将工件安装到特定位置并维护此列表而不破坏任何东西将是一个真正的噩梦,这不会起作用,您不想这样做.

但是,TBH,我不明白这一点.那么,你为什么要这样做呢?可能有替代的和更简单的解决方案,例如在本地存储库中安装工件,然后在项目根目录下复制它们.为什么这不起作用?我真的很想知道最后的意图.

更新:阅读了初始问题的更新后,我能想到的唯一解决方案(假设您不想使用不同的版本/标签)将使用两个本地存储库并在它们之间切换(虽然非常容易出错) ).

为此,请使用不同的用户帐户(因为默认情况下本地存储库是用户特定的).

或者~/.m2/settings.xml每次要切换时更新:


  ${user.home}/.m2/repository
  
  ...

或者使用另一个选项settings.xml并指向它--settings:

mvn install --settings /path/to/alternate/settings.xml

或者使用以下-Dmaven.repo.local选项在命令行上指定备用位置:

mvn -Dmaven.repo.local=/path/to/repo

正如我所说,这些解决方案都容易出错,并且没有一个非常令人满意.即使您可能有很好的理由并行处理多个分支,您的用例(不是重建所有内容)也不常见.在这里,使用不同的用户帐户可能是更糟糕的解决方案IMO.


我不同意帕斯卡尔,在很多情况下,这可能(而且)有用.首先想到的是CI构建,实际上Jenkins提供了使用全局本地存储库,jenkins执行器节点本地存储库或工作空间本地存储库的存储库来选择本地存储库.这对于避免冲突构建非常有用,尤其是在您同时运行它们时.
同样地,在我的工作站上,我经常同时处理几个错误并且需要一次运行多个构建,因为构建时间过长或者仅仅因为如果需要在等待解决方案或决定时将其置于混乱状态更高功率,我希望能够把它藏起来(是的,如果我们使用git我们可以做到这一点,但不幸的是我们使用svn :)),并且无缝地处理其他事情.当然,我可以使用VM或不同的帐户,但这是一个相当糟糕的开销.
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有