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

    1.什么是maven? 自动化构建项目工具 javaEE 经历了一些了变化 Make -> Ant -> Mav...

网友评论

      本文标题:18.maven

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