美文网首页其他
maven子pom没有继承到父pom依赖版本小问题记录

maven子pom没有继承到父pom依赖版本小问题记录

作者: Oliver_Li | 来源:发表于2020-02-21 20:42 被阅读0次
    • Java项目很多都会有子module,一般父项目没有逻辑代码,在父项目pom.xml中注明依赖、version和其他一些公用的东西,子module的pom继承父pom,子pom就不用写依赖的版本了,但至少也要写用到依赖的groupId、artifactId,这样默认会使用父项目依赖的版本。子pom也可写版本,这样就不受父pom影响了,和编程语言的继承类似,但还是有些区别。
    • 使用时也需要注意,我就是忘了其中一项,没有生效:
      • 父pom需要添加<packaging>pom</packaging>
      • 父pom需要用<modules><module>子module名</module></modules>注明子module有哪些。
      • 父pom声明依赖时<dependencies>外要嵌套<dependencyManagement>才能被子pom继承到,我就是忘了这点。
      • 子pom需要通过<parent></parent>指定父项目,声明依赖时就默认会用父pom中的版本了。
    • dependencyManagement:像上面提到的,一般在父项目中会声明这个元素,和普通依赖用法类似,这个元素并不会真的引入依赖,只会标明依赖和版本,子项目会从父项目找<dependencyManagement>从而确定需要引用依赖版本,类似于模板模式。
    • 父pom例子:
    <!-- 省略无关配置 -->
        <modules>
            <!-- 注明所有子module -->
            <module>module1</module>
        </modules>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.projectlombok</groupId>
                    <artifactId>lombok</artifactId>
                    <version>1.18.8</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    • 子pom module1例子:
    <!-- 省略无关配置 -->
        <parent>
            <groupId>com.group</groupId>
            <artifactId>parent</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <relativePath/>
        </parent>
        <dependencies>
            <!--这样会使用父pom中的依赖版本1.18.8,如果这里写version就不会使用父pom里的版本了-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
    

    相关文章

      网友评论

        本文标题:maven子pom没有继承到父pom依赖版本小问题记录

        本文链接:https://www.haomeiwen.com/subject/tmshqhtx.html