gpt4 book ai didi

maven - 在多模块设置中使用 maven ${basedir}

转载 作者:行者123 更新时间:2023-12-02 09:25:53 26 4
gpt4 key购买 nike

我正在使用本地存储库,如 Maven: add a dependency to a jar by relative path 中所述。 .

repository-url 在最顶层的 pom.xml 中定义为

<url>file:${basedir}/../3rdParty/maven-repository</url>

此外,最顶层的pom.xml定义了2个模块

<modules>
<module>sub1</module>
<module>sub2</module>
</modules>

问题是,如果一个模块(比如 sub1)定义了一个应该从存储库下载的依赖项,并且从最顶层目录调用 maven,则 ${basedir} 未设置为此目录,而是设置为 sub1,导致存储库 URL 错误。

因此,假设最顶层 pom.xml 的项目位于

/Development/myproject/pom.xml

存储库位于

/Development/3rdParty/maven-repository

那么存储库 URL 应设置为

/Development/myproject/../3rdParty/maven-repository

但事实证明它被设置为

/Development/myproject/sub1/../3rdParty/maven-repository

这当然不存在。

知道为什么会这样吗?

最佳答案

虽然在你的情况下这很烦人,但这是众所周知的并且是有意为之的。一个maven项目应该只知道它的执行目录,无论它在什么上下文中执行。

我问了几乎同样的问题:Maven variable for reactor root早些时候,唯一有意义的答案是 to use ${user.dir} ,尽管它很hacky并且如果您从模块目录构建则无法工作。

(还有一个非常详细的解决方案: Maven2 property that indicates the parent directory )

关于maven - 在多模块设置中使用 maven ${basedir},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6061537/

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