【发布时间】:2013-01-05 22:15:47
【问题描述】:
默认情况下,Maven 将从本地存储库(.m2 目录)中获取所有依赖项。但相反,我希望它从另一个位置获取依赖项。这甚至可能吗?
我不想对所有事情都这样做。我不希望这发生在“根”或父级。我希望这发生在更“更深”的 pom 级别。不止一次,同一个依赖是依赖。每次,我都希望它来自不同的位置。因此,一个会使用默认的 maven 配置并从 .m2 目录中获取,而另一个会从特定目录中获取。
我的理由:
在安装阶段,所有内容都安装到 .m2 目录中。在打包阶段,我将所有内容打包到目标目录中。 (我说的不对吗?)
我的 .m2 目录比需要的要多。我的目标有我的最终项目,没有包含在 .m2 目录中的额外“东西”。目标目录中的任何内容都是最终产品。当我处于编译阶段时,我不希望它依赖于 .m2 目录,而是依赖于目标,因为那是我真正的最终项目。
我在 Linux (Red Hat) 上使用 Maven 2.2.1。
我在某处读到,您可以在pom.xml 文件中的<dependency> 元素下使用具有system 值的<scope> 元素。然后在<dependency> 下的另一个名为<systemPath> 的元素中给出实际位置。我不知道这是否回答了我的问题,或者这是否完全不同。
我知道这违背了 Maven 的建议,但我有我的理由。
【问题讨论】:
-
这背后的原因是什么?如果它们实际上是两个不同的版本,那么您应该安装它们并适当地引用它们。如果它们是相同的版本,那么在本地抓取它与从其他位置抓取它有什么区别?也许有了更多信息,我们可以更好地回答您的问题。
-
@gwhitake 我做了一些编辑。我希望能更好地解释它。
标签: maven maven-2 dependencies dependency-properties dependency-management