Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 依赖项与依赖项管理?_Maven - Fatal编程技术网

Maven 依赖项与依赖项管理?

Maven 依赖项与依赖项管理?,maven,Maven,我已经看过了,但还不清楚什么时候用 仅在父pom中添加dependencies标记,以及何时使用dependenciesManagement标记 我的理解是,当我的所有子模块都需要使用相同的依赖项版本时,我们应该在依赖项标记下声明依赖项(不带依赖项管理标记) 但另一方面,如果一些子项目需要使用不同的版本,那么我们应该在Dependencies标记下声明依赖项(将在dependencyManagement标记下)。然后子模块可以使用重写版本引用它们 正确吗?在中声明不会将指定的工件设置为任何项目(

我已经看过了,但还不清楚什么时候用 仅在父pom中添加
dependencies
标记,以及何时使用
dependenciesManagement
标记

我的理解是,当我的所有子模块都需要使用相同的依赖项版本时,我们应该在
依赖项
标记下声明依赖项(不带
依赖项管理
标记)

但另一方面,如果一些子项目需要使用不同的版本,那么我们应该在
Dependencies
标记下声明依赖项(将在
dependencyManagement
标记下)。然后子模块可以使用重写版本引用它们

正确吗?

中声明
不会将指定的工件设置为任何项目(父项目或子项目)的依赖项。它只是说明:如果您想将其用作依赖项,则可以将其与这些设置(
版本
范围
,…)一起使用,而无需反复指定设置,然后。。。但是,您可以随时覆盖“real”中的“management”设置

另见

关于您的第二段,家长POM有两种选择:

  • 正如您正确描述的:

    <dependencies>
      <dependency>
        <groupId>g-id</groupId>
        <artifactId>a-id</artifactId>
        <version>1.0.0</version>
      </dependency>
    </dependencies>
    
    
    g-id
    a-id
    1.0.0
    
  • 为了保持一致性,我会使用这个:

    <dependencyManagement>
      <dependencies>
          <dependency>
            <groupId>g-id</groupId>
            <artifactId>a-id</artifactId>
            <version>1.0.0</version>
          </dependency>
       </dependencies>
     </dependencyManagement>
    
    <dependencies>
      <dependency>
        <groupId>g-id</groupId>
        <artifactId>a-id</artifactId>
      </dependency>
    </dependencies>
    
    
    g-id
    a-id
    1.0.0
    g-id
    a-id
    
  • 您的第三段是正确的。

    中声明
    不会将指定的工件设置为任何项目(父项目或子项目)的依赖项。它只是说明:如果您想将其用作依赖项,则可以将其与这些设置(
    版本
    范围
    ,…)一起使用,而无需反复指定设置,然后。。。但是,您可以随时覆盖“real”中的“management”设置

    另见

    关于您的第二段,家长POM有两种选择:

  • 正如您正确描述的:

    <dependencies>
      <dependency>
        <groupId>g-id</groupId>
        <artifactId>a-id</artifactId>
        <version>1.0.0</version>
      </dependency>
    </dependencies>
    
    
    g-id
    a-id
    1.0.0
    
  • 为了保持一致性,我会使用这个:

    <dependencyManagement>
      <dependencies>
          <dependency>
            <groupId>g-id</groupId>
            <artifactId>a-id</artifactId>
            <version>1.0.0</version>
          </dependency>
       </dependencies>
     </dependencyManagement>
    
    <dependencies>
      <dependency>
        <groupId>g-id</groupId>
        <artifactId>a-id</artifactId>
      </dependency>
    </dependencies>
    
    
    g-id
    a-id
    1.0.0
    g-id
    a-id
    

  • 你的第三段是正确的。

    可能重复的可能重复的可能重复的感谢Gerold。我理解“dependencyManagement”的用法,但是你能看到我对diff b/w
    Dependency
    dependencyManagement
    的最新理解是否正确吗?正如你所说的
    。我会使用它来保持一致性:
    I,e。方法2而不是1。我的观点是,如果我确信我的所有父/子模块都需要使用相同的依赖版本,那么我不应该使用方法1而不是方法2吗?因为在方法2中,我必须不必要地提到子模块中的依赖关系,所以您可以详细说明“覆盖继承的依赖关系设置的依赖关系设置不引用它。”。它本身代表“?@emily Re”我必须不必要地提到子模块中的依赖关系“–不,你不必:
    g-id.a-id
    也被声明为
    /
    。这样,它将由孩子继承(版本在
    //
    中声明)。@emily Re“can you elaboate”–我的意思是,如果覆盖父项继承的依赖项(完全,即所有设置),则对父项依赖项设置的更改将不会反映在覆盖的依赖项中。但你是对的。如果向父级添加设置,它也会反映在子级,因此显然存在引用。我要删除这些句子。谢谢谢谢你,格洛德。我理解“dependencyManagement”的用法,但是你能看到我对diff b/w
    Dependency
    dependencyManagement
    的最新理解是否正确吗?正如你所说的
    。我会使用它来保持一致性:
    I,e。方法2而不是1。我的观点是,如果我确信我的所有父/子模块都需要使用相同的依赖版本,那么我不应该使用方法1而不是方法2吗?因为在方法2中,我必须不必要地提到子模块中的依赖关系,所以您可以详细说明“覆盖继承的依赖关系设置的依赖关系设置不引用它。”。它本身代表“?@emily Re”我必须不必要地提到子模块中的依赖关系“–不,你不必:
    g-id.a-id
    也被声明为
    /
    。这样,它将由孩子继承(版本在
    //
    中声明)。@emily Re“can you elaboate”–我的意思是,如果覆盖父项继承的依赖项(完全,即所有设置),则对父项依赖项设置的更改将不会反映在覆盖的依赖项中。但你是对的。如果向父级添加设置,它也会反映在子级,因此显然存在引用。我要删除这些句子。谢谢