栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

03maven的核心概念

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

03maven的核心概念

maven核心概念有

  • 1约定的目录结构
  • 2POM
  • 3坐标
  • 4仓库
  • 5依赖
  • 6生命周期/插件/目标
  • 7聚合
  • 8继承
1约定的目录结构为

spring项目名
src目录存放源码
main目录存放主程序
java目录存放Java源文件
resources目录存放配置文件
test目录存放测试程序
pom.xml文件Maven的核心配置文件

此目录规范了开发结构,提供标准的、统一的项目结构。Eclipse和Idea工程结构不一样,用maven统一结构可以跨开发工具

程序员开发代码普遍认同的观点:约定>配置>编码

2、pom文件3、坐标4、仓库

maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖,等 



    4.0.0

    com.nie
    spring
    1.0-SNAPSHOT
    war
    spring

第一行是xml头,指定了该xml文档的版本和编码方式,

是所有pom.xml的根元素,声明了一些POM相关的命名空间和xsd元素,这些属性不是必须的,但是使用这些属性可以让第三方工具ide帮助我们快速编辑POM

4.0.0指定了当前POM模型的版本,对于现阶段maven只能是4.0.4

定义了项目的基本坐标,
groupId定义了项目属于哪个组,一般是域名倒序
artifactId定义了当前项目组中的唯一ID,一般是项目名
version定义了当前版本,SNAPSHOT是快照版本,表示项目还在开发中,是不太稳定的版本

友好的项目名称,不是必须的,但是推荐生命name属性,以方便查阅和交流

仓库已在文章01maven概念与安装_梓源先生的博客-CSDN博客介绍

5依赖

概念:当项目中使用某一jar包A,A.jar使用B.jar的某些API时,项目依赖了A.jar,A.jar依赖了B.jar

引入方式:在pom.xml文件中添加对应的坐标,


  
    junit
    junit
    4.11
    test
  
5.1依赖的传递性:

A 依赖 B,B 依赖 C,A 调用C的API,这就是依赖的传递性
        直接传递:在当前项目中通过依赖配置建立的依赖关系
        间接传递:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

依赖管理
依赖的排除(不需要):排除本项目中不使用的jar包


  
    junit
    junit
  


可选依赖(不透明):让被依赖者不能使用该jar包(私有化)

junit
junit
4.11
test
true
5.2依赖的范围:

maven在编译、测试、运行的时候使用不同的classpath,依赖范围就是控制这三种依赖关系

依赖的jar默认任何情况都可使用,通过scope标签设定范围,默认是compile
test

scope主代码测试代码打包范例
compilelog4j
testjunit
providedservlet-api
runtimejdbc

servlet-api为什么打包不需要?
是因为打包嵌入tomcat服务器时,tomcat内部有servlet-api的jar包,如果不设置范围,会产生依赖冲突

6生命周期和插件 6.1生命周期

概念:Maven 生命周期为了对所有的构建过程进行抽象和统一,定义了各个构建环节的执行顺序,有了这个清单,Maven 就可以自动化的执行构建命令了。

maven的生命周期是抽象的,实际行为都是又插件来完成的

 Maven 有三套相互独立的生命周期,分别是:

  • Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
  • Default Lifecycle 构建的核心部分,编译,测试,打包,安装,部署等等。
  • Site Lifecycle 生成项目报告,站点,发布站点。

maven拥有三套独立的生命周期

Clean 生命周期

Clean 生命周期一共包含了三个阶段:
① pre-clean 执行一些需要在 clean 之前完成的工作 ② clean 移除所有上一次构建生成的文件 ③ post-clean 执行一些需要在 clean 之后立刻完成的工作
Site 生命周期
① pre-site 执行一些需要在生成站点文档之前完成的工作 ② site 生成项目的站点文档 ③ post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 ④ site-deploy 将生成的站点文档部署到特定的服务器上
这里经常用到的是 site 阶段和 site-deploy 阶段,用以生成和发布 Maven 站点,这是 Maven 相当强大的功能,Manager 比较喜欢,文档及统计数据自动生成 Default 生命周期 Default 生命周期是 Maven 生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里, 只解释一些比较重要和常用的阶段:
validate generate-sources process-sources generate-resources process-resources 复制并处理资源文件,至目标目录,准备打包。 compile 编译项目的源代码。 process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources 复制并处理资源文件,至目标测试目录。 test-compile 编译测试源代码。 process-test-classes test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 prepare-package package 接受编译好的代码,打包成可发布的格式,如 JAR 。 pre-integration-test integration-test post-integration-test verify install 将包安装至本地仓库,以让其它项目依赖。 deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享或部署到服务器上运行。

命令行和生命周期:maven执行命令的主要作用就是调用maven的生命周期阶段,因为三套生命周期是相互独立的,所以想同时进行多个生命周期就要写组合命令,生命周期的阶段是有前后依赖关系的,也就是说执行了后面的生命周期,前面也会执行 mvn clean:调用clean,实际执行的为clean的生命周期里的pre-clean和clean阶段 mvn clean package:执行了clean的生命周期里的pre-clean和clean阶段和default生命周期从开始到package阶段 mvn clean install:行了clean的生命周期里的pre-clean和clean阶段和default生命周期从开始到install阶段 插件/目标

maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,在maven设计中,实际的任务(如编译源代码)都由插件来完成。这种思想采用了设计模式中的模板方法。既保证了算法的扩展性,又能严格控制算法的整体结果,maven为大多数构建步骤编写了默认插件,当用户有特殊需求的时候,可以配置插件自定义构建行为

maven在核心为一些主要的生命周期阶段内置绑定了很多的插件,当执行该生命周期的命令时,对应的插件目标就会执行相应的任务

内置绑定

default生命周期的内置绑定插件绑定关系及具体任务如下(打包jar类型)

自定义绑定:用户可以根据自己业务需求将某个插件目标绑定到生命周期的某个阶段,

比如tomcat插件


    
    
        alfresco
        https://artifacts.alfresco.com/nexus/content/repositories/public/
    


    
        
            org.apache.tomcat.maven
            tomcat8-maven-plugin
            3.0-r1655215
            
                80
                UTF-8
                true
            
        
    
插件是支撑和扩展生命周期做的事, 如何理解生命周期和插件:比如,人的生命周期是一生,插件就相当于与人的功能年龄是抽象的概念,吃饭睡觉是实际人做的事,增加人的技能就相当于增加插件 7聚合 作用:一键安装各个工程模块 配置方式:创建一个空模块,打包类型定义为pom
pom
定义当前模块进行构建操作时关联的其他模块名称
../ssm_controller ../ssm_service ../ssm_dao ../ssm_pojo
参与聚合操作的模块最终执行顺序与模块间的依赖关系有关,与配置顺序无关 8继承

作用:通过继承可以实现在子工程中沿用父工程中的配置
        maven中的继承与java中的继承类似,在子工程中配置继承关系

使用方式:
        在子工程中声明其父工程坐标与对应的位置


    com.nie
    ssm
    1.0-SNAPSHOT
    
    ../ssm/pom.xml
附加:

maven常见构建命令

        maven命令使用mvn开头,后面添加功能参数,可以一次执行多个命令,使用空格分隔

mvn compile编译
mvn clean清理
mvn test测试
mvn package打包
mvn install安装到本地仓库



  
  4.0.0
  
  war

  
  com.nie
  
  spring
  
  1.0-SNAPSHOT

  
  
    
    
      junit
      junit
      4.12
    
  

  
  
    
    
      
      
        org.apache.tomcat.maven
        tomcat8-maven-plugin
        2.1
        
          80
          /
        
      
    
  


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号