Maven 入门

1、Maven基本概念


Maven主要服务于Java平台,用于:


项目构建


依赖管理


项目信息管理



1.1、项目构建的过程


清理项目


编译项目


测试项目


生成测试报告


打包项目


部署项目



1.2、依赖管理


<dependencies>  
    <!-- 使用 Maven 坐标管理 Jar -->  
    <dependency>  
        <groupId>junit</groupId>  
        <artifactId>junit</artifactId>  
        <version>3.8.1</version>  
        <scope>test</scope>  
    </dependency>  
    <!-- 以上为一个完整示例 -->  
</dependencies>  



1.3、使用 Maven 好处


明确的目录结构


管理依赖简洁


构件项目方便





2、使用 Maven


2.1、Maven 项目目录结构


|----src

|       |

|       |----main

|       |        |

|       |        |----java ——存放项目的 .java 文件

|       |        |

|       |        |----resources ——存放项目资源文件,如spring, hibernate配置文件

|       |        |

|       |----test

|       |        |

|       |        |----java ——存放测试 .java 文件

|       |        |

|       |        |----resources ——存放项目资源文件,如spring, hibernate配置文件

|       |        |

|----target ——文件编译后的目录

|

|----pom.xml ----Maven项目的配置文件



2.2、Maven常用命令


echo %MAVEN_HOME% 查看Maven安装目录


mvn -v 查看 Maven 版本


(以下需要切换到需要处理的项目的 pom.xml 文件目录下)


mvn clean 清理项目


mvn compile 编译项目


mvn test 测试项目


mvn package 打包:包括编译、测试、打包。


mvn install 安装:上传至本地仓库,包括编译、测试、打包、安装。


mvn site 生成测试报告


mvn deploy 上传项目至私服仓库


(手动创建 Maven,使用控制台命令测试效果)



2.3、pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"     
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0     
        http://maven.apache.org/maven-v4_0_0.xsd">    
    <modelVersion>4.0.0</modelVersion>    
    <groupId>springmvc</groupId>    
    <artifactId>springmvc</artifactId>    
    <version>1.0-SNAPSHOT</version>    
    <packaging>war</packaging>    
        
    <dependencies>    
        <dependency>    
            <groupId>junit</groupId>    
            <artifactId>junit</artifactId>    
            <version>3.8.1</version>    
            <scope>test</scope>    
        </dependency>    
    </dependencies>    
        
    <build>    
        <finalName>springmvc</finalName>    
    </build>    
        
</project>



2.4、Maven 三大生命周期


clean 清理工作


default 构建核心部分(编译、测试、打包、部署)


site 生成项目报告、站点、发布站点





3、Maven 仓库的概念


根据Maven的坐标,定义每个构件在仓库中的位置


路径为 groupId/artifactId/version/artifactId-version.packaging



3.1、Maven 坐标


3.1.1、Maven坐标主要组成:


groupId:定义maven的项目,可以用包名


artifactId:定义项目中的一个模块,一般都是工程名


version:版本


packaging:定义打包方式


3.1.2、Maven 坐标的作用:


用来标识构件,在依赖里面根据坐标来找需要的构件。



3.2、Maven 依赖:


根据maven坐标找依赖的构件


3.2.1、依赖中scope范围


3.2.1.1、compile: 编译依赖范围(默认)。编译,测试,运行三种有效。


3.2.1.2、test:测试依赖范围。只对测试代码有效。


3.2.1.3、provided:已提供依赖范围。对于编译,测试有效,但对于运行无效,因为由容器已经提供。


3.2.1.4、runtime:运行时提供。例如:jdbc驱动


compile、runtime会打到war包里去

test、provided不会打到war包里去

重点:手动测试测试效果


3.2.2、传递性依赖原则(依赖冲突解决):


3.2.2.1、路径最近者优先   CBA,C依赖B,B依赖A,会先用B的jar包


3.2.2.2、路径相同,第一声明者优先:CB,CA,看B,A在C中哪一个先声明



3.3、Maven 继承和聚合


3.3.1、继承:jar 包的统一管理,把 jar 抽取到 parent 项目中


3.3.2、聚合:一键打包


子项目 pom.xml


省略组名和版本号


增加 parent 配置关联父项目


依赖父项目中不共享部分 jar


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                            http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 省略组名 -->
    <!--<groupId>org.yangfan</groupId>-->
    <artifactId>project2</artifactId>
    <!--省略版本号-->
    <!--<version>1.0-SNAPSHOT</version>-->
    <packaging>war</packaging>

    <!-- 关联父项目 -->
    <parent>
        <!-- 父项目-组名 -->
        <groupId>org.yangfan</groupId>
        <!-- 父项目-构件ID -->
        <artifactId>parent</artifactId>
        <!-- 父项目-版本 -->
        <version>1.0-SNAPSHOT</version>
        <!-- 父项目-路径(同级目录下可省略) -->
        <relativePath>../parent</relativePath>
    </parent>

    <!-- 依赖 -->
    <dependencies>
        <!-- 依赖父项目 dependencyManagement 中定义的不共享 jar -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <!--省略版本号-->
            <!--<version>4.11</version>-->
        </dependency>
    </dependencies>

    <!-- 打包后的名称 -->
    <build>
        <finalName>project2</finalName>
    </build>

</project>


父项目 pom.xml


package 改为 pom


定义不共享 jar


定义共享 jar


<?xml version="1.0" encoding="UTF-8"?>  
<project xmlns="http://maven.apache.org/POM/4.0.0"  
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    <modelVersion>4.0.0</modelVersion>  
  
    <groupId>org.yangfan</groupId>  
    <artifactId>parent</artifactId>  
    <version>1.0-SNAPSHOT</version>  
    <!-- 父项目-必须改成 pom -->  
    <packaging>pom</packaging>  
  
    <!-- 聚合 -->  
    <modules>  
        <module>../project2</module>  
    </modules>  
  
    <!-- 不共享 jar 依赖 -->  
    <dependencyManagement>  
        <dependencies>  
            <dependency>  
                <groupId>org.yangfan</groupId>  
                <artifactId>maven1</artifactId>  
                <version>1.0-SNAPSHOT</version>  
            </dependency>  
            <dependency>  
                <groupId>junit</groupId>  
                <artifactId>junit</artifactId>  
                <version>4.11</version>  
            </dependency>  
        </dependencies>  
    </dependencyManagement>  
  
    <!-- 共享 jar 依赖 -->  
    <dependencies>  
        <dependency>  
            <groupId>commons-logging</groupId>  
            <artifactId>commons-logging-api</artifactId>  
            <version>1.1</version>  
        </dependency>  
    </dependencies>  
  
</project>



3.4、Maven 定义变量


<!-- 定义变量 -->
<properties>
	<org.yangfan.maven1>1.0-SNAPSHOT</org.yangfan.maven1>
</properties>

<dependency>
	<groupId>org.yangfan</groupId>
	<artifactId>maven1</artifactId>
	<!-- 使用变量 -->
	<version>${org.yangfan.maven1}</version>
</dependency>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值