distributionManagement 下的存储库标签与存储库?

问题描述 投票:0回答:2

我在父元素下看到

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
期间出现。对吗?

maven
2个回答
155
投票

你说得完全正确!

来自 POM 参考

repositories
元素在 POM 中指定 Maven 可以下载远程工件以供当前项目使用的位置和方式,而
distributionManagement
则指定该项目在访问远程存储库时将在何处(以及如何)访问远程存储库。部署。如果未定义 snapshotRepository,则存储库元素将用于快照分发。

  • distributionManagement
    元素下声明的存储库将用于部署,即在运行
    mvn deploy
    时。
  • repositories
    元素将用于下载项目的依赖项。该命令不一定是
    mvn install
    ,而是任何需要 Maven 从存储库获取工件的命令。

0
投票

是的,

<distributionManagement>
将jar包部署到我们将在url中提到的远程存储库中。如果我们想在另一个包中使用该包作为依赖项,我们将在依赖项中添加该包并执行命令
mvn install
如果在本地存储库中找不到该包,它将在本地存储库中查找该包(存在于 .m2 中)然后它将从远程存储库中查找并将其下载到本地存储库中。 注意:只有当我们使用
mvn deploy
时,mvn才会将打包好的jar部署到远程仓库中。

© www.soinside.com 2019 - 2024. All rights reserved.