• Maven继承


    继承为了消除重复,可以把pom 中很多相同的配置提取出来;如:grouptId, version 等。

    在使用的时候子工程直接继承父工程的依赖版本号,子工程中不再需要指定具体版本号,方便统一管控项目的依赖版本问题。

    创建一个父工程,

    父工程的pom.xml

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <groupId>cn.sm1234</groupId>
     5     <artifactId>sm1234-parent</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7     <packaging>pom</packaging>
     8     <description>这是一个父工程,锁定版本</description>
     9 
    10     <!-- 抽取相同的属性,如版本号,集中定义版本依赖号 -->
    11     <properties>
    12         <!-- 名称需要自定义 -->
    13         <servlet.version>2.5</servlet.version>
    14         <spring.version>5.1.3.RELEASE</spring.version>
    15     </properties>
    16 
    17     <!-- 抽取子工程的依赖配置 -->
    18     <!-- 版本锁定,当子工程有需要并且自行添加了具体依赖后才有效 -->
    19     <dependencyManagement>
    20         <dependencies>
    21             <!-- 依赖servlet的api -->
    22             <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
    23             <dependency>
    24                 <groupId>javax.servlet</groupId>
    25                 <artifactId>servlet-api</artifactId>
    26                 <version>${servlet.version}</version>
    27                 <!-- privided依赖范围,编译时有效,但是运行发布的时候是无效的。 -->
    28                 <scope>provided</scope>
    29             </dependency>
    30 
    31             <!-- 依赖spring框架 -->
    32             <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    33             <dependency>
    34                 <groupId>org.springframework</groupId>
    35                 <artifactId>spring-beans</artifactId>
    36                 <version>${spring.version}</version>
    37             </dependency>
    38 
    39             <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
    40             <dependency>
    41                 <groupId>org.springframework</groupId>
    42                 <artifactId>spring-aop</artifactId>
    43                 <version>${spring.version}</version>
    44             </dependency>
    45 
    46             <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
    47             <dependency>
    48                 <groupId>org.springframework</groupId>
    49                 <artifactId>spring-aspects</artifactId>
    50                 <version>${spring.version}</version>
    51             </dependency>
    52 
    53         </dependencies>
    54     </dependencyManagement>
    55 
    56 
    57 </project>

    子工程的pom.xml

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3 
     4     <!-- 引用父工程 -->
     5     <parent>
     6         <groupId>cn.sm1234</groupId>
     7         <artifactId>sm1234-parent</artifactId>
     8         <version>0.0.1-SNAPSHOT</version>
     9         <!-- 父项目的pom.xml文件的相对路径,一般可不指定 -->
    10         <!-- <relativePath>../parent</relativePath> -->
    11     </parent>
    12 
    13     <modelVersion>4.0.0</modelVersion>
    14     <artifactId>sm1234-web</artifactId>
    15     <packaging>war</packaging>
    16 
    17     <dependencies>
    18         <dependency>
    19             <groupId>javax.servlet</groupId>
    20             <artifactId>servlet-api</artifactId>
    21             <!-- 继承父工程后,版本号由父工程里面统一指定,不再需要特别指定 -->
    22             <!-- <version>${servlet.version}</version> -->
    23             <!-- privided依赖范围,编译时有效,但是运行发布的时候是无效的。 -->
    24             <scope>provided</scope>
    25         </dependency>
    26 
    27         <!-- 依赖spring框架 -->
    28         <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
    29         <dependency>
    30             <groupId>org.springframework</groupId>
    31             <artifactId>spring-beans</artifactId>
    32         </dependency>
    33 
    34         <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
    35         <dependency>
    36             <groupId>org.springframework</groupId>
    37             <artifactId>spring-aop</artifactId>
    38         </dependency>
    39 
    40         <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
    41         <dependency>
    42             <groupId>org.springframework</groupId>
    43             <artifactId>spring-aspects</artifactId>
    44         </dependency>
    45     </dependencies>
    46 
    47     <!-- JDK编译插件,改变JDK编译环境 -->
    48     <build>
    49         <plugins>
    50             <!-- 1.java编译插件 -->
    51             <plugin>
    52                 <groupId>org.apache.maven.plugins</groupId>
    53                 <artifactId>maven-compiler-plugin</artifactId>
    54                 <version>3.6.1</version>
    55                 <configuration>
    56                     <source>1.8</source>
    57                     <target>1.8</target>
    58                     <encoding>UTF-8</encoding>
    59                 </configuration>
    60             </plugin>
    61 
    62             <!-- 2.配置打包项目源码包的插件 -->
    63             <plugin>
    64                 <groupId>org.apache.maven.plugins</groupId>
    65                 <artifactId>maven-source-plugin</artifactId>
    66                 <version>2.2.1</version>
    67                 <!-- 完成绑定.执行完打包后执行 -->
    68                 <executions>
    69                     <execution>
    70                         <goals>
    71                             <goal>jar-no-fork</goal>
    72                         </goals>
    73                         <phase>verify</phase>
    74                     </execution>
    75                 </executions>
    76             </plugin>
    77 
    78             <!-- 3.tomcat7插件 -->
    79             <plugin>
    80                 <groupId>org.apache.tomcat.maven</groupId>
    81                 <artifactId>tomcat7-maven-plugin</artifactId>
    82                 <version>2.2</version>
    83                 <configuration>
    84                     <port>8080</port>
    85                     <server>tomcat7</server>
    86                 </configuration>
    87             </plugin>
    88         </plugins>
    89     </build>
    90 </project>

    说明:在子工程中引入父工程的内容时,会有重复内容,会有黄色感叹号提示,我们只需将子工程的重复内容删除即可。

    注意:

    relativePath:父项目的 pom.xml 文件的相对路径。默认值为../pom.xml。maven首先从当前构建项目开始查找父项目的 pom 文件,然后从本地仓库,最后从远程仓库。RelativePath 允许你选择一个不同的位置;一般Eclipse 找不到 parent 项目时可以先update project,还不行则可配置此项。
    如果所有子工程都需要依赖某些包,父工程可以通过设置依赖,将依赖关系传递到子工程中。
    <dependencies>
    //添加公共依赖包
    </dependencies>

    【注意】dependencyManagement 与 dependencies 的区别

  • 相关阅读:
    关于正餐智能POS6.0.1.1改版后,点击反结账进入点菜界面后无法进行加菜的FAQ
    关于正餐智能POS6.0.1.1改版后,订单模块无法进行部分退款的FAQ
    退款证书相关
    简易付主副机和打印机配置
    秒点直连操作文档
    智能POS打印配置&常见问题FAQ 12-14 后期持续更新
    ERP主副机和打印机配置FAQ
    ASP.NET没有魔法——ASP.NET MVC Controller的实例化与执行
    ASP.NET没有魔法——ASP.NET MVC 路由的匹配与处理
    ASP.NET没有魔法——ASP.NET MVC路由
  • 原文地址:https://www.cnblogs.com/116970u/p/10137968.html
Copyright © 2020-2023  润新知