• 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:如有不足之处,请指出。我们共同进步。

  • 相关阅读:
    IDEA常用快捷键
    mybatis动态sql总结
    端口被占用的问题解决 Web server failed to start. Port ×× was already in use
    java常见的面试题(二)
    java常见的面试题(一)
    Zookeeper学习总结
    Oracle 创建表空间及用户授权、dmp数据导入、表空间、用户删除
    Navicat远程连接服务器mysql
    HashMap的实现原理?如何保证HashMap线程安全?
    ArrayList和LinkedList内部是怎么实现的?他们之间的区别和优缺点?
  • 原文地址:https://www.cnblogs.com/enroute/p/13628508.html
Copyright © 2020-2023  润新知