Maven学习总结

Maven 是 Apache 软件基金会组织维护的一款自动化构建工具, 专注服务于 Java 平台的项目构建依赖管理。

一、项目构建

项目构建就是以我们编写的 Java 代码、框架配置文件、 国际化等其他资源文件、 JSP 页面和图片等静态资源作为“原材料”, 去“生产”出一个可以运行的项目的过程。

1.1 构建的主要过程(Maven生命周期)

①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将 Java 源程序编译为字节码文件。
③测试:针对项目中的关键点进行测试,确保项目在迭代开发过程中关键点的正确性。
④报告:在每一次测试后以标准的格式记录和展示测试结果。
⑤打包:将一个包含诸多文件的工程封装为一个压缩文件用于安装或部署。 Java 工程对应 jar 包, Web
工程对应 war 包。
⑥安装:在 Maven 环境下特指将打包的结果——jar 包或 war 包安装到本地仓库中。
⑦部署:将打包的结果部署到远程仓库或将 war 包部署到服务器上运行(实际中很少用mvn的方式部署)

注意点:运行任何一个阶段的时候,它前面的所有阶段都会被运行, 例如我们运行 mvn install 的时候,代码会被编译,测试,打包。

1.2 Maven 核心概念


Maven 能够实现自动化构建是和它的内部原理分不开的, 包含九个核心概念:
①POM
②约定的目录结构
③坐标
④依赖管理
⑤仓库管理
⑥生命周期
⑦插件和目标
⑧继承
⑨聚合

二、依赖管理

2.1 依赖范围--compile/test/provided

注意:IDEA有时不引入provided的依赖(如:MAC--社区版)

2.2 依赖传递性

注意点:可以依赖传递的jar包,不必在每个模块都引入一次,只需在最底层的模块引入一次即可

备注--不会形成依赖传递的2种方式:

(1)scope=provided或scope=test的,不会形成依赖传递;

(2)<optional>true</optional>,不会形成依赖传递。

       <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

2.3 依赖原则(解决jar冲突)

(1)路径最短者优先


(2)路径相同时先声明者优先

“声明”的先后顺序指的是 dependency 标签配置的先后顺序

2.4 依赖排除(略)

三、Maven仓库

3.1 Maven仓库分类

3.2 仓库中的文件

  • Maven 的插件(详见本文--六、maven插件)
  • 我们自己开发的项目的模块
  • 第三方框架或工具的 jar 包

四、统一管理所依赖 jar 包版本的2种方式

4.1 第一种方式--properties自定义标签

步骤一:统一声明版本号

注意:其中 my.version 部分是自定义标签,可以随便命名

<properties>
        <my.version>4.1.1.RELEASE</my.version>
</properties>

步骤二:引用前面声明的版本号

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${atguigu.spring.version}</version>
    </dependency>
……
</dependencies>

4.2 第二种方式--继承

参考:Maven学习总结--继承_na_tion的专栏-CSDN博客

五、聚合

5.1 为什么要使用聚合?

作用:一次构建多个项目/模块,用于快速构建maven工程

将工程拆分为模块后, 需要手动逐个安装到仓库后依赖才能够生效。 修改源码后也需要逐个手动进行 clean 操作。 而使用了聚合之后就可以批量进行 Maven 工程的安装、清理工作。

5.2 如何配置聚合?

步骤一:创建一个模块作为总的聚合工程模块,该模块仅包含pom.xml文件并且打包方式设为pom
步骤二:在总的聚合工程中使用 modules/module 标签组合, 指定模块工程的相对路径即可。

<modules>
    <module>../Hello</module>
    <module>../HelloFriend</module>
    <module>../MakeFriends</module>
</modules>

注意:一键安装时,可以“智能”的进行依赖管理,即:不必严格按照依赖顺序写module

5.3 继承与聚合关系

六、Maven插件(pom.xml文件中的Build配置)

6.1 maven插件配置

(1)Maven是通过pom.xml来执行任务的,其中的build标签描述了如何来编译及打包项目,而具体的编译和打包工作是通过build中配置的 plugin 来完成;

(2)plugin配置不是必须的,因为默认情况下,Maven 会绑定以下几个插件来完成基本操作

(3)Spring Boot打成jar需要引入的插件

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.3.6.RELEASE</version>
        </plugin>
    </plugins>
</build>

(4)maven继承/聚合项目打成jar包方式(参考

在各module中的pom文件中配置如下插件,然后在父pom所在目录执行命令(mvn clean install -Dmaven.test.skip=true。也可在父pom中点击package)

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.6.RELEASE</version>
                <configuration>
                    <!-- 指定该Main Class入口,即启动类的地址 -->
                    <mainClass>com.fuping3.UserApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--把依赖的包都打包到生成的Jar包中(zip解压后可以看见依赖的jar,反编译看不见依赖的jar)-->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

6.2 maven指定JDK版本的3种方式

(1)通过项目中pom文件properties中特定标签指定

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

(2)通过项目中pom文件maven插件的方式指定

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <!-- jdk的版本号 -->
            <source>11</source>
            <target>11</target>
            <encoding>UTF-8</encoding>
        </configuration>
    </plugin>
</plugins>

(3)通过maven配置文件setting.xml指定

 <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>
  </profiles>

6.3 plugins和pluginManagement标签

两者的区别,和dependencies/dependencyManagement的区别非常类似,此处不再描述。

<!-- 父pom声明插件,并没有引入插件 -->
<build>
    <finalName>loan-startup</finalName>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>



<!-- 子pom引入插件-->
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
        </plugin>
    </plugins>
</build>

七、Maven约定的目录结构

八、部署jar到本地仓库、远程私服

第三方jar包需要添加到本地仓库、远程私服,参考:使用maven工具安装第三方jar包到本地仓库和私服 - 寻梦君 - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 Maven 需要有一定的 Java 编程基础,对于 Maven 的概念和使用方式也需要有一定的了解。另外,需要了解如何编写和管理项目依赖,以及如何使用 Maven 插件等。如果你之前没有接触过 Maven,建议先了解一些基本的概念和使用方法,例如 Maven 的生命周期、坐标、仓库等。 ### 回答2: 学习Maven需要一些基础知识。首先,需要了解Java编程语言和软件开发的基本概念和原理,以便理解Maven的作用和使用方式。其次,需要熟悉命令行操作以及基本的项目管理和构建知识,这有助于更好地使用Maven进行项目构建和管理。另外,了解项目构建管理工具的基本概念和工作原理也是必要的,这样能更好地理解Maven的工作方式和特点。最后,掌握XML的基本知识也是必要的,因为Maven项目的配置文件pom.xml采用XML格式进行编写和管理。当然,对于初学者来说,这些基础知识可以通过学习和实践逐步掌握,同时也可以通过查阅相关的文档和资料来加深理解。总之,学习Maven需要一些基础知识,但通过积极学习和实践,初学者也能逐步掌握并运用好这个项目构建管理工具。 ### 回答3: 学习Maven并不需要太多的基础知识,但有一些基本的编程和项目管理概念对于理解和使用Maven是很有帮助的。 首先,对Java编程语言有一定的了解是必要的,因为Maven主要用于构建和管理Java项目。了解Java的基础语法、面向对象编程原理以及常用的Java开发工具,能更好地理解和使用Maven。 其次,对于项目管理的基本概念也是必备的。Maven是一个强大的项目管理工具,能够帮助我们自动化构建、测试、打包和部署项目。了解项目的生命周期、依赖管理、版本控制以及发布流程等概念,可以更好地理解和使用Maven的各种功能。 另外,了解一些常用的构建工具和持续集成工具也是有益的。Maven与其他构建工具(如Ant)和持续集成工具(如Jenkins)有很好的兼容性和集成性,对它们有一定的了解可以更好地搭配使用Maven进行项目构建和持续集成。 总结来说,学习Maven需要有一定的Java编程基础、项目管理概念以及对一些相关的构建和持续集成工具的了解,这样才能更好地理解和使用Maven的各种功能,提高项目管理和开发的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值