我在父元素下看到
repository
标签,即 distributionManagement
和 repositories
。有什么区别?
<distributionManagement>
<repository>
<id>...</id>
<name>...</name>
<url>...</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>...</id>
<name>...</name>
<layout>default</layout>
<url>...</url>
</repository>
</repositories>
我的理解
repository
元素下的 distributionManagement
元素指定了部署时将部署工件的位置。它只会在 mvn deploy
(即部署时间)期间出现,而不是在 mvn install
(即构建时间)期间出现。对吗?
repositories 元素下的 repository
元素指定需要从何处获取依赖项。它只会在 mvn install
期间出现,而不是在 mvn deploy
期间出现。对吗?
你说得完全正确!
来自 POM 参考:
元素在 POM 中指定 Maven 可以下载远程工件以供当前项目使用的位置和方式,而repositories
则指定该项目在访问远程存储库时将在何处(以及如何)访问远程存储库。部署。如果未定义 snapshotRepository,则存储库元素将用于快照分发。distributionManagement
distributionManagement
元素下声明的存储库将用于部署,即在运行 mvn deploy
时。repositories
元素将用于下载项目的依赖项。该命令不一定是 mvn install
,而是任何需要 Maven 从存储库获取工件的命令。是的,
<distributionManagement>
将jar包部署到我们将在url中提到的远程存储库中。如果我们想在另一个包中使用该包作为依赖项,我们将在依赖项中添加该包并执行命令 mvn install
如果在本地存储库中找不到该包,它将在本地存储库中查找该包(存在于 .m2 中)然后它将从远程存储库中查找并将其下载到本地存储库中。
注意:只有当我们使用mvn deploy
时,mvn才会将打包好的jar部署到远程仓库中。