Maven学习

Maven学习

1、什么是Maven

  • Maven是Apache基金会下的一个子项目,主要用于帮我们构建项目和依赖管理。在开发项目的过程中,会需要依赖大量的jar包,管理起来比较麻烦,所以则需要使用maven来帮我们进行管理,我们则可以把更多的精力放到开发过程中去。

2、Maven的作用

  • 用于构建项目。准备好开发环境的过程。可以对项目进行打包:.jar/.war
  • 用于管理项目jar包。当我们的需要使用某一jar包时,则可以在pom.xml里面配置所需要使用的依赖,当本地仓库没有时,Maven则会到远程仓库中找,把jar包下载到本地进行使用。可以有效避免缺少jar包或jar包冲突,而导致项目无法运行的问题。

3、Maven的安装和配置

(1)将下载的压缩包解压到一个指定的文件夹下

(2)配置JAVA_HOME和MAVEN_HOME


(3)添加到path中

(4)验证是否配置成功

  • Maven配置:

(1)设置本地仓库

<!--
    在setting标签下,插入以下标签
    D:\maven_rep:自定义路径    
-->
<localRepository>D:\maven_rep</localRepository>

(2)设置远程仓库

<!--在mirrors标签下,插入以下标签-->
<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus aliyun</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

(3)配置Maven识别jdk1.8

<!--在profiles标签下,插入以下标签-->
<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>  
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>

4、IDEA创建Maven项目

(1)创建项目


(2)配置maven项目

(3)创建完成


5、将Maven_JAVA项目更改为Maven_WEB项目

(1)更改为WEB项目






(2)创建WEB项目的artifacts


(3)将WEB项目添加到tomcat中

(4)测试是否更改成功


6、Maven基础命令

(1)在IDEA中调出命令出口

(2)mvn -v:用于查看maven信息

(3)mvn clean:用于清除target

(4)mvn test:用于代码测试



(5)mvn package:用于导出jar包或war包

  • 默认导出jar包


(6)mvn install: 用于将jar或war包安装到本地仓库中


6、Maven坐标

  • Maven通过坐标,可以定位到本地仓库中jar包。


7、依赖的作用范围

  • 搜索Maven依赖信息的网站:https://mvnrepository.com/

  • compile:默认为compile。在main目标、test目录、开发过程、部署到web服务器上都有效。例如:Spring的jar包。

  • test:只在test目录、开发过程中有效。例如:junit,SpringBoot-test,SpringCloud-test。

  • provided:只在main目录、test目录、开发过程中有效。例如:servlet-api,jsp-api。因为web服务器上本身自带了这些jar包,无需我们再添加上去,所以我们只需要在开发过程中使用即可,避免jar冲突。

8、依赖的传递性和排除

  • 依赖传递:compile域中的jar包,可以进行传递。test和provided域中的jar包不能传递。
  • 依赖排除:使用exclusion可以对依赖进行阻断。即被exclusion标注的jar,不会被引入maven中。
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.2.8.RELEASE</version>
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

9、Maven的继承

  • 可以有效避免子工程中的依赖版本不一致。
  • 在需要修改依赖版本时,则不需要到每个子工程中进行修改,直接在父工程pom.xml修改即可,提高开发效率。

(1)父工程和子工程pom.xml配置

  • 父工程pom.xml配置:
    • 父工程的打包方式必须为pom格式
    • 父工程的坐标不变
    <!--父工程坐标-->
    <groupId>fun.jiayou</groupId>
    <artifactId>maven_project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--父工程的打包方式必须为pom-->
    <packaging>pom</packaging>
  • 子工程pom.xml配置:
    • 子工程的坐标指向父工程坐标
<parent>
        <!--指向父工程坐标-->
        <artifactId>maven_project</artifactId>
        <groupId>fun.jiayou</groupId>
        <version>1.0-SNAPSHOT</version>
</parent>
<!--子工程的groupid和version和父工程的一致,可省略-->
<artifactId>maven_son2</artifactId>

(2)父工程和子工程依赖设置

  • 父工程依赖设置(通过dependencyManagement来进行依赖管理)
<!--该标签下的依赖,对子工程只有版本控制作用,依赖依然需要到子工程中配置-->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
    </dependencies>
</dependencyManagement>
  • 子工程依赖设置(正常配置dependencies)
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <!--不需要写版本号,由父工程控制-->
        <!--<version>5.2.8.RELEASE</version>-->
    </dependency>
</dependencies>

(3)声明可引用的属性

  • 将版本号提取出来(当需要修改依赖版本时,则直接修改引用属性即可)
<!--声明版本号属性-->
<properties>
    <jiayou.spring.version>5.2.8.RELEASE</jiayou.spring.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <!--引用版本号-->
            <version>${jiayou.spring.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <!--引用版本号-->
            <version>${jiayou.spring.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

10、Maven的聚合

  • 聚合:即将部分整合成一个整体。
  • 聚合的作用:将工程聚合起来,在需要将工程安装到本地仓库时,maven则会自动把父工程、子工程按照正确的依赖顺序安装到仓库中,不需要一个一个手动地去安装。
  • 聚合的配置:在父工程的pom.xml中,添加指定子工程的模块名
<modules>
    <module>maven_son</module>
    <module>maven_son2</module>
</modules>


ps:如有不足之处,请指出。我们共同进步。

posted @ 2020-09-07 20:31  白雲  阅读(205)  评论(0编辑  收藏  举报