Maven学习

本文详细介绍了Maven的构建过程,包括清理、编译、测试、打包、安装和部署等步骤。强调了pom.xml文件的重要性,它是项目的对象模型,用于描述项目结构和依赖。还讲解了Maven的坐标系统(GAV)、仓库管理,以及插件配置、资源插件的使用。此外,还涵盖了依赖管理、生命周期和单元测试的概念。
摘要由CSDN通过智能技术生成

1.介绍

项目的构建:构建是面向过程的,就是一些步骤,完成项目代码的编译、测试、运行、打包、部署等;

maven支持的构建包括:

1.清理:把之前项目编译的东西删除掉,为新的编译代码做准备;

2.编译:把程序源代码编译为执行代码,.java到.class文件,它是批量的,maven可以同时把成千上百个文件编译成.class文件,javac一次只能编译一个文件;

3.测试:maven可以执行测试程序代码,验证功能是否正确,它是批量的,maven可以同时执行多个测试代码,同时测试很多功能;

4.报告: 生成测试结果的文件;

5.打包: 把项目中的所有class文件、配置文件等所有资源放到一个压缩到文件中,这个压缩文件就是项目的结果文件,java程序的压缩文件通常是.jar为扩展名的,web应用的压缩文件的扩展名通常是.war;

6.安装:把jar文件、war文件安装到服务器;

2.pom.xml-项目对象模型

Project-Object-Model;

maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述,控制maven构建项目的过程,pom.xml是maven的灵魂;

3.坐标gav

maven把任何一个插件都作为仓库中的一个项目进行管理,用一组向量组成的坐标来表示,坐标在仓库中可以唯一定位一个maven项目;

groupId:组织名,通常是公司或者组织域名倒序+项目名;

artifactId:模块名,通常是工程名;

version:版本号;

4.编译-compile

编译命令,到项目文件下,src的上级目录下,cmd 执行mvn compile,然后maven会下载相关插件;

插件的存放目录:C:\Users\Administrator\.m2\repository,该目录也叫本机仓库;

5.仓库

 仓库可以存放maven使用的jar包和我们项目使用的jar包(第三方工具);

仓库分为本地仓库和远程仓库;

远程仓库包括:

        中央仓库:最权威的,所以开发人员共享使用的一个集中仓库;

        中央仓库镜像:中央仓库的备份,在各大洲,重要的城市都有一份中央仓库的镜像;

        私服:在公司内部,局域网使用,不对外开放;

 中央仓库地址:https://mvnrepository.com/

Maven – Welcome to Apache Maven

仓库插件下载顺序,先去本地仓库查找,没有的话再去私服,再去最近的城市查找镜像库,再去中央仓库下载;

6.packaging

打包后压缩文件的扩展名,默认是jar;

7.依赖

dependencies,dependency;

一个maven项目的正常运行需要其他项目的支持,maven会根据坐标自动到本地仓库查找;功能类似于import;

依赖范围用scope约束,表示该依赖在maven构建的哪些阶段中起作用;

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

依赖范围的3个选项:

        compile:编译、测试、打包、安装、部署阶段使用该jar包;

        test:只在maven的测试阶段使用该jar包;

        provided:编译、测试阶段使用该jar包,项目部署后服务器已经提供该jar包;

默认是compile

8.生命周期

就是maven构建项目的过程:

        清理:mvn clean

        编译:mvn compile 编译src/main/java/目录下的java文件为class文件,同时class文件移动到target/classes文件夹下,同时把main/resources目录下的所有文件拷贝到target/classes文件夹下;

        测试:mvn test-compile 编译测试程序;

        打包:mvn package

        安装:mvn install 安装到本地maven仓库中,供其他项目使用;

        部署:mvn deploy,一般不用;

9.单元测试

junit是一个专门测试的框架,测试的是类中的方法,每个方法都是独立测试的,方法是测试的基本单元,所以又叫单元测试;

10.插件配置

<build>
		<!-- 配置插件 -->
		<plugins>
			<!-- 配置具体插件 -->
			<plugin>
				<groupId>org.maven.apache.palugins</groupId>
				<!-- 插件的名称 -->
				<artifactId>maven-compiler-plugin</artifactId>
				<!-- 插件的版本 -->
				<version>3.8.1</version>
				<configuration>
					<!-- 告诉maven,我们写的代码是在jdk17上编译的 -->
					<source>17</source>
					<!-- 告诉maven,我们的程序应该运行在jdk17上-->
					<target>17</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

11.属性

<properties>
    <!-- maven构建项目使用编码 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 编译代码使用的jdk版本 -->
    <maven.compiler.source>17</maven.compiler.source>
    <!-- 运行程序使用的jdk版本 -->
    <maven.compiler.target>17</maven.compiler.target>
  </properties>

自定义属性:

        首先在properties内通过自定义标签声明变量,标签名就是变量名,然后在pom.xml的其他位置用${标签名}调用;

自定义全局变量一般是定义依赖的版本号,当你的项目中要使用多个相同的版本号,可以使用自定义全局变量统一修改;

12.资源插件

在没有使用resources的时候,maven执行编译代码时,会把src/main/resources下的文件拷贝到target/classes目录中,对于arc/main/java下的非java文件不进行任何处理,不会拷贝到target/classes目录中;

添加resources则可以把需要的资源拷贝到classes目录下;

<build>
    <resources>
      <resource>
        <!-- 资源路径 -->
        <directory>src/main/java</directory>
        <includes>
          <!-- 路径下只有properties/xml文件都会被扫描到 -->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <!-- 不启用过滤器,*.properties已经起到过滤作用了 -->
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

y_w_x_k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值