Maven高级

聚合

  1. 解决了多模块的构建和维护问题

  2. 聚合实现方法:

    1. 先建立一个项目A,A项目不是为了做具体功能的,就是为了方便管理其他所有项目用而存在的。所有的项目合在一起称为一个工程。

    2. A项目中没有代码,就是为了方便管理其他项目,所以就不需要src目录了,直接删了。

    3. 在A项目的pom.xml文件当中,添加打包方式:

      
      <packaging>pompackaging>
      
    4. A项目中只提供pom.xml文件,在pom文件中添加要聚合管理的项目。【定义当前模块进行构建操作时关联的其他模块名称,当前模块进行什么操作,其他模块也跟着进行什么操作】

      
      <modules>
          
          <module>../mvn-test01module>
          
          <module>../mvn-test02module>
          <module>../mvn-test03module>
      modules>
      
    5. 目录结构:

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MghehmKh-1682150169336)(C:\Users\XueYingHao\AppData\Roaming\Typora\typora-user-images\image-20230422090527735.png)]

      因为pom.xml在mvn项目下,在这个pom.xml文件中写的相对路径都是相对于pom.xml文件所在的路径进行查找的,所以需要加上“…/”,“…/项目名”,这里一定是项目名,不是Maven的pom.xml文件中的标签的值。

    6. 参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关。

    7. 聚合的作用:聚合用于快速构建Maven工程,一次性构建多个模块/项目。

继承

  1. 解决了资源统一管理的问题。防止多个模块之间使用的资源版本不统一而导致的错误。

  2. 实现方法:

    1. 新建一个空模块A,A中没有代码,只有一个pom.xml文件。

      
      <packaging>pompackaging>
      
    2. 因为继承主要是为了解决资源不统一的问题,所以在A模块中定义依赖管理()标签,子模块都去继承A模块,子模块中需要使用什么资源,直接使用父模块中的这个资源,统一了子模块中的依赖资源。

      
      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>组织idgroupId>
                  <artifactId>项目idartifactId>
                  <version>项目版本号version>
              dependency>
              ...
          dependencies>
      dependencyManagement>
      
    3. 在子模块的pom.xml文件中直接写:

      
      <parent>
          
          <groupId>com.xyhgroupId>
          <artifactId>mvn2artifactId>
          <version>1.0-SNAPSHOTversion>
          
          <relativePath>../mvn2/pom.xmlrelativePath>
      parent>
      
    4. 父模块还可以对插件进行统一管理:

      
      <build>
          
          <pluginManagement>
              <plugins>
                  <plugin>
                      <groupId>groupId>
                      <artifactId>artifactId>
                      <version>version>
                  plugin>
                  ...
              plugins>
          pluginManagement>
      build>
      
  3. 在子模块中使用父模块中规定的依赖和插件的时候,就只需要指定:和。

    • 版本等其他信息,由父模块统一管理。
    • 子模块的groupId和父模块的groupId一般都是一样的,所以子模块的pom.xml文件中的groupId是可以省略的,省略之后从父模块中继承过来。
      • 子模块中可以没有groupId可以但是父模块中肯定由groupid,因在为子模块继承父模块的时候,肯定得有父模块的坐标,父模块没有groupid的话子模块也不能继承父模块所以也就不存在继承关系,也没有父子模块的说法了。
  4. 插件和依赖的继承都是一样的规则:

    • 在父模块中编写详细的坐标包括版本等信息,在子模块中只需要表明使用的是那个插件或者就行,不用写版本等信息。
    • 父模块管理的依赖就是在外面包一层
    • 父模块管理的插件就是在外面包一层
  5. 聚合和继承的区别:

    1. 聚合:是在父模块中操作,父模块是主动的,父模块知道他聚合了子模块,子模感知不到。
    2. 继承:是在子模块中操作,子模块是主动的,子模块知道他继承了父模块,父模块感知不到。
  6. 插件和依赖并不是在父里面配置完子里面不用配了,而是在父里配置多多的,子里用哪个写上哪个就行。

  7. 继承与聚合的

    1. 作用
      • 聚合用于快速构建项目
      • 继承用于快速构建项目
    2. 相同点
      • 聚合和继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中。
      • 聚合和继承均属于设计模块,并无实际的模块内容。

属性

  1. 属性就相当于在Maven中定义的变量。

  2. 在pom.xml文件中定义属性的语法格式:

    
    <properties>
        
        <junit.version>4.13.2junit.version>
        
        <junit.version>4.12junit.version>
    properties>
    
  3. pom.xml文件中使用属性的语法格式:

    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        
        <version>${junit.version}version>
    dependency>
    
  4. 属性:

    1. 内置属性

      1. version : 代表当前工程的版本号。

        • 在pom.xml文件下根标签下的这里的值
      2. basedir : ${basedir}表示项目的根文件夹,既包括pom.xml的文件文件夹

      • ${basedir}写在子项目中,代表当前项目的根文件夹

      • ${basedir}写在父项目中代表“所有子项目的”根文件夹

        
        <resources>
            <resource>
        
         <directory>${project.basedir}/src/main/resources
                directory>
        	    
                <filtering>truefiltering>
            resource>
        resources>
        
    2. setting属性

      1. settings.localRepository : 使用Maven配置文件setting.xml中的标签属性,用于动态配置。【读取到的是:D:\XueYingHao\maven\repository标签中的内容“D:\XueYingHao\maven\repository”,也就是本地仓库的位置】
      2. 想要读取到settings中的配置信息直接使用“settings.标签名”这样的语法。
    3. Java系统属性:用于读取Java系统属性

      1. user.home : 获取的是用户的“家目录”;使用方式 ${user.home}
        • user.home=C:\Users\XueYingHao,获取的值就是【C:\Users\XueYingHao】
        • 执行“mvn help:system”指令,在“System Properties”可以查看,${这里可以填写什么}
    4. 环境变量属性:

      1. 调用格式:${env.变量名}
        • 例如:${env.JAVA_HOME}
      2. 执行“mvn help:system”指令,在“Environment Variables”可以查看,${env.这里可以填写什么}

资源配置

  1. 有了资源配置机制,方便了Maven统一管理项目的配置文件,所有的配置信息都是写在pom.xml文件当中的。

  2. 在pom.xml配置文件中进行配置属性【相当于定义的变量】:

    <properties>
        <jdbc.driver>com.mysql.jdbc.Driverjdbc.driver>
        <jdbc.url>jdbc:mysql://localhost:3306/xyhjdbc.url>
        <jdbc.username>rootjdbc.username>
        <jdbc.password>rootjdbc.password>
    properties>
    
  3. 根据规范项目的src/main/resources下面一般都是存放配置文件的,在此处新建一个属性配置文件:jdbc.properties文件。

    jdbc.driver=${jdbc.driver}
    jdbc.url=${jdbc.url}
    jdbc.username=${jdbc.username}
    jdbc.password=${jdbc.password}
    
  4. 在pom文件中配置资源文件的信息【到目前位置在pom文件夹中写的都是相对路径没有绝对路径】

    <build>
        <resources>
            <resource>
              
                <directory>src/main/resourcesdirectory>
                
                <filtering>truefiltering>
            resource>
        resources>
    build>
    
  5. <build>
        
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
                <filtering>truefiltering>
            resource>
        resources>
        
        <testResources>
            <testResource>
                <directory>src/test/resourcesdirectory>
                <filtering>truefiltering>
            testResource>
        testResources>
    build>
    

息–>


src/test/resources
true

































你可能感兴趣的:(maven,java)