Maven 使用

Maven 使用,第1张

Maven 使用 1、Maven 项目结构



    
    4.0.0
    
    
        
        com.sqd.com
        
        maven-test-parent
        
        1.0.0-SNAPSHOT
        
        ../pom.xml
    

    
    com.sqdkk
    
    sparsearray
    
    0.0.1-SNAPSHOT
    
    jar
    
    maven-test
    
    Demo project for maven

    
    
        8
        1.1.16
    

    
    
        
            com.alibaba
            druid
            ${druid.version}
        
    

    
    
        
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                
                    8
                    8
                
            
        
    



2、Maven 构建项目命令
  • mvn compile # 编译
  • mvn clean # 清理
  • mvn test # 测试
  • mvn package # 打包
  • mvn install # 安装到本地仓库
3、Maven 依赖管理 3.1 依赖传递

依赖具有传递性

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源
3.2 依赖传递冲突问题
  • 路径优先:依赖中出现相同资源,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:同级配置了不同资源的不同版本时,后配置的覆盖先配置的
3.3 设置依赖不可见

标签设置为 true时,可以隐藏该依赖不可见,但并未断开依赖,依旧可以使用


    com.alibaba
    druid
    1.1.16
    true

3.4 排除依赖(排包),主动断开依赖

在依赖中使用 标签排除对某个包的依赖关系

推荐使用 idea 插件 Maven Helper 可以快速排除 jar 包,解决 jar 包冲突问题


    com.alibaba
    druid
    1.1.16
    true
    
        
            
            
        
    

3.5 依赖范围

依赖的 jar 默认情况可以在任何地方使用,通过 标签设定作用范围

作用范围:

  • compile:默认,主程序范围有效(main)
  • test:测试,测试程序范围有效(test文件夹)
  • provided:主代码和测试代码
  • runtime:是否参与打包(package 指令范围内)
4、Maven 项目构建生命周期 4.1 clean

清理工作

  • pre-clean:执行一些在 clean 之前完成的工作
  • clean:移除上一次构建生成的文件
  • post-clean:执行一些需要在 clean 之后完成的工作
4.2 default

核心工作:编译、测试、打包、部署等

  • validate:校验
  • initialize:初始化
  • generate-sources:生成源代码
  • process-sources:处理源代码
  • generate-resources:生成资源文件
  • process-resources:处理资源文件
  • compile:编译

选择 compile 指令的话,执行到这里结束

  • process-classes:处理类文件
  • generate-test-sources:生成测试源代码
  • process-test-source:处理测试源代码
  • generate-test-resoutces:生成测试资源文件
  • process-test-resources:处理测试资源文件
  • test-compile:编译测试代码
  • process-test-classes:处理测试类文件
  • test:测试

选择 test 指令的话,执行到这里结束

  • prepare-package:准备打包
  • pre-integration-test:集成测试前
  • integratioin-test:集成测试
  • post-integration-test:集成测试后
  • verify:验证
  • install:安装
  • deploy:部署
4.3 site

生产报告、发布站点等

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site:执行一些需要在站点文档生成后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上
5、Maven 插件
  • 插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能
  • 默认 maven 在各个生命周期上绑定有预设的功能(clean、install、packaging、compile等)
  • 通过插件可以自定义其他功能

    
        
            org.apache.maven.plugins
            maven-source-plugin
            2.2.1
            
            
                
                    
                    
                        jar
                    
                    
                    generate-test-resources
                
            
        
    

6、Maven 多模块构建维护 6.1 模块聚合

模块聚合用于快速构建项目,在当前模块中配置关系,可以感知到参与聚合的模块有哪些

聚合方式
  • 创建一个空模块,打包类型定义为 pom

    pom
    
  • 定义当前模块进行构建时关联的其他模块

    
        maven-test-api
        maven-test-spi
        maven-test-impl
    
    

    模块构建执行顺序与模块之间的依赖有关,与配置顺序无关

示例:



    4.0.0
    
    com.sqd.com
    maven-test
    1.0.0-SNAPSHOT
    
    
    pom
    
    
    
        
    	maven-test-api
    	maven-test-spi
    	maven-test-impl
    

6.2 模块继承

继承用于快速配置,在子模块中配置关系,父模块无法感知哪些子模块继承了自己

继承方式
  • 在父工程中管理依赖

        
            
            
                
                    com.alibaba
                    druid
                    1.1.16
                
            
        
    
  • 在子工程中声明父工程坐标及对应的位置,选择要使用的依赖

    
        com.sqd
        maven-test
        1.0.0-SNAPSHOT
        
        ../pom.xml
    
    
    
        
            com.alibaba
            druid
        
    
    
父工程会被继承的资源

比较多,列几个比较常见的:

  • grupId:项目组 ID,项目坐标核心元素
  • version:项目版本,项目坐标核心元素
  • description:项目描述信息
  • url:项目 url 地址
  • distributionManagement:项目部署配置
  • properties:自定义的 Maven 属性
  • dependencies:项目的依赖配置
  • dependencyManagement:项目依赖管理配置
  • repositories:项目仓库配置
  • build:项目源码目录、输出目录、插件、插件管理等配置
  • reporting:项目报告输出目录配置、报告插件配置等

示例:

父工程进行依赖管理



    4.0.0

    com.sqd.com
    maven-test
    1.0.0-SNAPSHOT

    
    pom

    
    
        
        maven-test-api
        maven-test-spi
        maven-test-impl
    

    
    
        
        
            
                com.alibaba
                druid
                1.1.16
            
        
    

    
        
        
            
                
                    org.apache.maven.plugins
                    maven-source-plugin
                    2.2.1
                    
                        
                            
                                jar
                            
                            generate-test-resources
                        
                    
                
            
        

    

子工程声明父工程坐标位置并选择要使用的依赖



    4.0.0
    
    
    
        com.sqd
        maven-test
        1.0.0-SNAPSHOT
        
        ../pom.xml
    

    maven-test-api
    jar

    
    
        
            com.alibaba
            druid
        
    


7、Maven properties 属性定义与使用 Maven 属性类别
  • 自定义属性(定义变量,方便统一维护)

    
    	1.1.16
    
    
    ${druid.version}
    
  • 内置属性(Maven 内置属性,快速配置)

    ${basedir}
    ${version}
    
  • Setting 属性(Maven 配置文件 setting.xml 的标签属性)

    ${settings.localRepository}
    
  • Java 系统属性

    ${user.home}
    
  • 环境变量属性

    ${env.JAVA_HOME}
    

示例:


	1.1.16
    4.1.2



    
        com.alibaba
        druid
        ${druid.version}
    

8、版本管理 8.1 工程版本
  • SNAPSHOT(快照版本,开发中~)
    • 项目开发中,为了方便团队进行合作,解决模块间互相依赖和更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫做快照版本(测试阶段版本)
    • 快照版本会随着开发进展不断更新
  • RELEASE(发布版本)
    • 项目发布的较为稳定的版本,对应的构建文件是稳定的,进行后续开发也不会改变当前发布版本内容,称为发布版本
8.2 工程版本号
  • 版本号规范:<主版本>.<次版本>.<增量版本>.<里程碑版本>
    • 主版本:重大架构的更新
    • 次版本:较大的功能增加和变化
    • 增量版本:漏洞修复等
    • 里程碑版本:不稳定,需要测试
9、resource 资源配置

在配置文件中加载 pom 文件中定义的属性


    
        
        ${project.basedir}/src/main/resources
		
        true
        
            **/*.properties
        
    

10、多环境开发配置

在 pom.xml 文件中配置多环境


    
    
        
        pro_env
        
        
            1.1.16
        
        
        
            true
        
    
    
    
        ......
    

加载指定环境命令:mvn 指令 -P 环境id

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5612128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存