2013-04-15 58 views
3

我正在构建一个依赖库的Java项目。 mvn.bat clean install按照预期生成了target子目录,并且该项目也与mvn.bat clean install一起建成。Apache Maven:依赖项和库在本地安装在哪里?

什么是不期望的是,当我删除整个目录的库,外部项目仍然建好,虽然它依赖的库已经消失。

这是如何工作的?

UPDATE:原来Maven在%USERPROFILE\.m2中生成某种缓存。

+0

你为什么要maven不要缓存? –

回答

4

您很可能会考虑将本地安装的所有内容(以及来自中央存储库的Maven下载文件)提供给以后使用。

您描述的行为是有意的,并且允许一次构建A,然后让B在需要时引用它,而不必每次都重新编译A.这通常是非常可取的,特别是在团队或大型代码库中。

请注意,对于更改代码,您应该使用-SNAPSHOT工件。他们的处理方式稍有不同。

+2

不错的答案,我会删除我的支持。 –

3

您的依赖关系是总是下载到.m2/repository中。

如果你想对你的团队下载库一些可预测性,你可以建立一个仓库管理器,如Nexus:https://repository.apache.org/index.html#welcome

而不是从Maven的中央,你的开发人员下载的依赖将从这里下载它们的依赖资料库经理。

+0

出于好奇,为什么版本库管理器使下载更容易预测? –

+0

并不总是如果你在'settings.xml'中改变它。 –

+0

如果settings.xml设置为仅在Nexus中查找依赖项,并且至少有一名开发人员下载了一个库,则该库在Nexus中可用。这确保即使从Maven中心或任何其他存储库中删除了该库,该库也适用于所有开发人员。另外,如果您创建自定义工件并将其放置在Nexus中(例如,数据库驱动程序...),则可确保每个开发人员都使用此自定义工件的相同版本。 – user2147970