gpt4 book ai didi

maven-2 - Maven - 将工件安装到工作区中的本地存储库

转载 作者:行者123 更新时间:2023-12-03 12:12:03 24 4
gpt4 key购买 nike

我想要一种方法,其中“mvn install”将文件放在我的源(结帐)根目录下的存储库文件夹中,同时使用 ~/.m2/repository 中的第 3 方依赖项。

所以在'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)

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

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

最佳答案

Maven 可以搜索多个存储库(本地、远程、“假”远程)来解决依赖关系,但只有 install 期间安装工件的本地存储库.将工件安装到特定位置并维护此列表而不破坏任何东西将是一场真正的噩梦,那将是行不通的,您不想这样做。

但是,TBH,我不明白这一点。那么,你为什么要这样做呢?可能还有其他更简单的解决方案,例如在本地存储库中安装工件,然后将它们复制到项目根目录下。为什么这行不通?不过我真的很想知道最终的意图。

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

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

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

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>${user.home}/.m2/repository</localRepository>
<!--localRepository>${user.home}/.m2/repository2</localRepository-->
...
</settings>

或者有另一个 settings.xml并使用 --settings 指向它选项:
mvn install --settings /path/to/alternate/settings.xml

或者使用 -Dmaven.repo.local 在命令行上指定备用位置选项:
mvn -Dmaven.repo.local=/path/to/repo

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

关于maven-2 - Maven - 将工件安装到工作区中的本地存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2018965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com