我正在构建一个依赖库的Java项目。 mvn.bat clean install
按照预期生成了target
子目录,并且该项目也与mvn.bat clean install
一起建成。Apache Maven:依赖项和库在本地安装在哪里?
什么是不期望的是,当我删除整个目录的库,外部项目仍然建好,虽然它依赖的库已经消失。
这是如何工作的?
UPDATE:原来Maven在%USERPROFILE\.m2
中生成某种缓存。
我正在构建一个依赖库的Java项目。 mvn.bat clean install
按照预期生成了target
子目录,并且该项目也与mvn.bat clean install
一起建成。Apache Maven:依赖项和库在本地安装在哪里?
什么是不期望的是,当我删除整个目录的库,外部项目仍然建好,虽然它依赖的库已经消失。
这是如何工作的?
UPDATE:原来Maven在%USERPROFILE\.m2
中生成某种缓存。
您很可能会考虑将本地安装的所有内容(以及来自中央存储库的Maven下载文件)提供给以后使用。
您描述的行为是有意的,并且允许一次构建A,然后让B在需要时引用它,而不必每次都重新编译A.这通常是非常可取的,特别是在团队或大型代码库中。
请注意,对于更改代码,您应该使用-SNAPSHOT工件。他们的处理方式稍有不同。
不错的答案,我会删除我的支持。 –
您的依赖关系是总是下载到.m2/repository中。
如果你想对你的团队下载库一些可预测性,你可以建立一个仓库管理器,如Nexus:https://repository.apache.org/index.html#welcome
而不是从Maven的中央,你的开发人员下载的依赖将从这里下载它们的依赖资料库经理。
出于好奇,为什么版本库管理器使下载更容易预测? –
并不总是如果你在'settings.xml'中改变它。 –
如果settings.xml设置为仅在Nexus中查找依赖项,并且至少有一名开发人员下载了一个库,则该库在Nexus中可用。这确保即使从Maven中心或任何其他存储库中删除了该库,该库也适用于所有开发人员。另外,如果您创建自定义工件并将其放置在Nexus中(例如,数据库驱动程序...),则可确保每个开发人员都使用此自定义工件的相同版本。 – user2147970
你为什么要maven不要缓存? –