18.maven

作者: 我爱阿桑 | 来源:发表于2021-09-20 23:11 被阅读0次

    1.什么是maven?

    • 自动化构建项目工具
    • javaEE 经历了一些了变化 Make -> Ant -> Maven ->Gradle---

    2.构建的概念

    • 构建不是创建,创建一个工程,不等于构建一个项目。

    3.构建环节

    • 清理 :删除以前的编译结果,为重新编译做好准备。
    • 检查
    • compile (编译 ): 将Java源程序编译为字节码文件。
    • 测试
    • package (打包):将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。Java工程对应jar包,Web工程对应war包
    • intall (安装):在Maven环境下特指将打包的结果——jar包或war包安装到本地仓库中。

    4.maven构建

    image.png
    • 本地默认仓库在c盘.m2
    • 文件的配置都在conf的Setting.xml文件中

    5.maven的pom文件

    • groupId :公司或者组织的域名的倒序 + 当前项目的名称
    • artifactId :当前模块的名称
    • version :当前模块的版本
      com.atguigu.maven + Hello + 1.0-SNAPSHOT 三个内容连起来,就是具体的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>com.atguigu.maven</groupId>
        <artifactId>Hello</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--当前工程中jar包的版本统一管理-->
        <properties>
            <!--自定义的标签(相当于一个变量名)-->
            <spring-version>5.1.9.RELEASE</spring-version>
        </properties>
    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <!--引入spring全家桶-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>${spring-version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>${spring-version}</version>
            </dependency>
        </dependencies>
    </project>
    

    6.配置依赖管理

    • <scope>test</scope>
    • 默认是compile
      (1)main目录下的Java代码可以访问这个范围的依赖
      (2)test目录下的Java代码可以访问这个范围的依赖
      (3)部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
    • test
      (1)main目录下的Java代码不能访问这个范围的依赖
      (2)test目录下的Java代码可以访问这个范围的依赖
      (3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
    • provided
      (1)main目录下的Java代码可以访问这个范围的依赖
      (2)test目录下的Java代码可以访问这个范围的依赖
      (3)部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
    <?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>com.atguigu.maven</groupId>
        <artifactId>HelloFriend</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>com.atguigu.maven</groupId>
                <artifactId>Hello</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.0</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
    </project>
    

    7.同一管理当前模块的jar包

    <!--统一管理当前模块的jar包的版本-->
    <properties>
        <spring.version>4.0.0.RELEASE</spring.version>
    </properties>
    

    下面就可以这样写

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>
    

    8.继承

    <!--继承-->
    <parent>
        <groupId>com.atguigu.maven</groupId>
        <artifactId>Parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    <!--指定从当前pom.xml文件出发寻找父工程的pom.xml文件的相对路径-->
    <relativePath>../Parent/pom.xml</relativePath>
    </parent>
    

    在父工程中管理依赖
    将Parent项目中的dependencies标签,用dependencyManagement标签括起来;

    只是管理版本号
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    在子项目中重新指定需要的依赖,删除范围和版本号
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
    
    在父项目中,如果想直接指定依赖,不仅仅是版本号,就这么写,去掉 
      dependencyManagement,标签
    <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.0</version>
            </dependency>
        </dependencies>
    

    9.聚合

    在总的聚合工程中使用modules/module标签组合,指定模块工程的相对路径即可

    <!--聚合-->
    <modules>
        <module>../MakeFriend</module>
        <module>../OurFriends</module>
        <module>../HelloFriend</module>
        <module>../Hello</module>
    </modules>
    
    

    相关文章

      网友评论

          本文标题:18.maven

          本文链接:https://www.haomeiwen.com/subject/qhymgltx.html