代码之家  ›  专栏  ›  技术社区  ›  Guillaume

Maven2在父级和子级之间共享依赖项(不重新说明子级中的依赖项)

  •  4
  • Guillaume  · 技术社区  · 14 年前

    延伸

    父级中声明的所有依赖项在扩展(子级)项目中都可用。

    现在有了maven2,我使用了继承/组合特性,我必须在每个子项目中重新声明依赖项(减去版本号)。 how-to-share-common-properties-among-several-maven-projects )

    1 回复  |  直到 7 年前
        1
  •  14
  •   Pascal Thivent    14 年前

    不,你没有。父pom中声明的依赖项是继承的。

    有没有办法告诉maven我想和我所有的孩子分享我的一些依赖?

    只需申报 <parent> 子POMs中的元素。例如,对于此父POM:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>my.group.id</groupId>
      <artifactId>parent</artifactId>
      <packaging>pom</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>Demo - Parent</name>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <modules>
        <module>child</module>
      </modules>
    </project>
    

    子模块的POM:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>my.group.id</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <name>Demo - Child</name>
      <artifactId>child</artifactId>
      <packaging>jar</packaging>
    </project>
    

    junit依赖项按预期继承:

    $ mvn dependency:tree 
    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'dependency'.
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Demo - Child
    [INFO]    task-segment: [dependency:tree]
    [INFO] ------------------------------------------------------------------------
    [INFO] [dependency:tree {execution: default-cli}]
    [INFO] my.group.id:child:jar:1.0-SNAPSHOT
    [INFO] \- junit:junit:jar:3.8.1:test
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    [INFO] ------------------------------------------------------------------------
    ...
    

    我怀疑你在 the <dependencyManagement> section (还有另一个目的)。