Maven九个核心概念

九个核心概念

1. POM(Project Object Model)

​ 项目对象模型,将Java 工程的相关信息封装为对象作为便于操作和管理的模型。 学习Pom.xml 文件中的配置

2. 约定的目录结构

  • main 目录用于存放主程序

  • test 目录用于存放测试程序

  • java 目录用于存放源代码

  • resources 目录用于存放配置文件和资源文件

    约定>配置>编码

3. 坐标

  • pom.xml 文件中 gav

    <groupId></gropId>  #内容一般由公司或者组织的域名倒叙+当前项目名称
    <artifactld></artifactid>  #当前项目的模块名称
    <version></version>   #当前模块的版本
    <dependencies></dependencies> 
    
  • maven 的中央资源库:

    https://mvnrepository.com/

4.依赖管理

  • 直接依赖与间接依赖

  • 依赖的范围

    <!--依赖范围
            compile :编译范围 默认值
                         这个范围的包,可以个main 和test 下面的类使用;参与部署
            test: 测试范围
                      这个范围的包,只给test下面的类使用,不能给main不能用 不参与部署
            provided : 提供范围
                          这个范围的包,可以给main和test下面类使用;不参与部署
    		runtime: 测试时 classpath 
    				运行时:classpath
    
                -->
    
    
  • 依赖的传递性

    mavenmavenmaven依赖范围对A的可见性
    ABCcompileYes
    ABDtestNo
    ABEprovidedNo
  • 依赖的原则性

    • 路径最短优选
    • 声明优先
  • 依赖的排除

           <!--
              依赖的移除
               -->
              <exclusions>
                  <exclusion>
    
                      <groupId>javax.servlet</groupId>
                      <artifactId>javax.servlet-api</artifactId>
                      <!--                    <version>3.1.0</version>-->
                  </exclusion>
              </exclusions>
    
          </dependency>
    
    
  • 统一管理目标jar包的版本

     
    <!--
      maven 项目类型:
      jar  表示java 项目默认值
      war  表示web项目
      pom  表示父工程
     -->
         <packaging>jar</packaging>
        <!--全局变量声明,可以声明版本号-->
        <properties>
            <mybatis.version>3.4.6</mybatis.version>
        </properties>
    
    
    
        <dependencies>
            <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
                <!--依赖范围
                compile :编译范围 默认值
                         这个范围的包,可以个main 和test 下面的类使用;参与部署
                test: 测试范围
                      这个范围的包,只给test下面的类使用,不能给main不能用 不参与部署
                provided : 提供范围
                          这个范围的包,可以给main和test下面类使用;不参与部署
                -->
                <!--
                依赖的移除
                 -->
                <exclusions>
                    <exclusion>
    
                        <groupId>javax.servlet</groupId>
                        <artifactId>javax.servlet-api</artifactId>
                        <!--                    <version>3.1.0</version>-->
                    </exclusion>
                </exclusions>
                
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/junit/junit -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            
        </dependencies>
    
    

5.仓库管理

​ 仓库中的文件

  • Maven的插件

  • 我们自己开发的项目模块

  • 第三方框架和工具的Jar包

    按照坐标生成目录结构,可以通过统一的方式查询或依赖

6. 生命周期

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

  • Clean Lifecycle 进行真正的构建之前进行一些清理工作。
    • 三个阶段
      1. pre-clean 执行一些需要在clean 之前完成的工作
      2. clean 移除所有上一次构建生成的文件
      3. post-clean 执行一些需要在clean 之后立即完成的工作
  • Default Lifrcycle 构建的核心部分,编译,测试,打包,安装,部署等。
    • compile 编译项目源码
    • test-Compile 编译测试源代码
    • test 使用合适的单元测试框架运行测试,这些测试代码不会打包或者部署
    • package 接受编译好的代码,打包成可发布的格式,如 JAR
    • install 将包安装至本地仓库,以让其他项目依赖
    • deploy 将最终的包复制到远程仓库,以让其他开发人员项目共享或部署到服务器上运行。
  • Site Lifecycle 生成项目报告,站点 ,发布站点
    • pre-site 执行一些需要在生成站点文档之前完成的工作
    • site 生成项目的站点文档
    • site-deploy 将生成的站点文档部署到特定的服务器上

**运行任何一个阶段的时候,它前面的所有阶段都会被运行 **

7. 插件和目标


8. 继承

​ 在父工程


<-- 依赖管理配置声明:声明配置,当前项目并不会直接引入jar包。
	子项目继承父项目,子项目不能直接使用jar包。子项目想用,必须得声明才能使用。
	好处:由父工程管理使用,子工程不需要管理版本
-->
<dependencyManagement>
   <dependencies>
		<dependency>
		 项目依赖
		</dependency>
   </dependencies>
</dependencyManagement>

<!-- 依赖管理:jar会被当前项目引入。子项目可以继承当前项目 并且可以直接使用-->
<dependencies>
 	     <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
</dependencies>

**子工程 **
子工程继承父工程后,g和v 可以省略。子工程与父工程的g和v就保持一致 *** 子工程依赖只需g和v ***

<!--子工程继承父工程-->
<parent>
		<groupId></gropId>  #内容一般由公司或者组织的域名倒叙+当前项目名称
		<artifactld></artifactid>  #当前项目的模块名称
		<version></version>   #当前模块的版本
       	<relativePath>../pom.xm</relativePath>
</parent>     

9.聚合

​ 在父工程pom.xml文件中 project 标签内加入

好处:对当前项目进行任何的操作,被聚合的项目都跟着做相同的操作

<modules>

	<module>项目名</module>
	<module></module>
	<module></module>

</modules>

Maven 常用命令

  1. mvn compile 执行编译
  2. mvn clean 清理 mvn clean compile
  3. mvn test-compile 对测试代码进行编译
  4. mvn clean test 先删除 后单元测试
  5. mvn clean package 打包
  6. mvn source:jar 生成源码包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值