视频链接:https://www.bilibili.com/video/BV1dp4y1Q7Hf?vd_source=9545770e4a2968c05878ffac8589ec6c
视频选集:P1
官网:http://maven.apache.org/
软件工程:为了能够实现软件的流水线式生产,在设计和构建软件时能够有一种规范和工程化的方法,人们便提出了软件工程概念。
完成一个java项目,需要做哪些工作
传统开发项目的问题,没有使用maven 【meivn】管理的项目
a.jar需要b.jar这个关系叫做依赖,或者你的项目中要使用mysql的驱动,也可以叫做项目依赖mysql驱动。a .class使用b.class,a依赖b类
需要改进项目的开发和管理,需要maven:
构建:项目的构建
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。
maven支持的构建包括有:
| 概念 | 解释 |
|---|---|
| POM【项目对象模型】 | 一个文件名称是pom.xml 。maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。 |
| 约定的目录结构 | maven项目的目录和文件的位置都是规定的 |
| 坐标 | 是一个唯一的字符串,用来表示资源的 |
| 依赖管理 | 管理项目可以使用jar文件 |
| 仓库管理(了解) | 资源存放的位置 |
| 生命周期(了解) | maven工具构建项目的过程,就是生命周期 |
| 插件和目标(了解) | 执行maven构建的时候用的工具是插件 |
| 继承 | |
| 聚合 |
注意:讲maven的使用,先难后易的。难是说使用maven的命令,完成maven使用,在idea中直接使用maven,代替命令。
每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
---/src
------/main #放你主程序java代码和配置文件
----------/java #你的程序包和包中的java文件
----------/resources #你的java程序中要使用的配置文件
------/test #放测试程序代码和文件的(可以没有)
---—------/java #测试程序包和包中的java文件
---—------/resources #测试java程序中要使用的配置文件
---/pom. xml #maven的核心文件(maven项目必须有)
疑问:
中央仓库的地址:https://repo.maven. apache.org
注意:mvn compile 编译src/main目录下的所有java文件的,执行mvn compile,结果是在项目的根目录下生成target目录(结果目录),maven编译的java程序,最后的class文件都放在target目录中
设置本机存放资源的目录位置:
pom:项目对象模型,是一个pom.xml文件
<groupId>公司域名的倒写</groupId>
<artifactId>自定义项目名称</artifactId>
<version>自定版本号</version>
groupId:组织名,通常是公司或组织域名倒序+项目名
artifactld:模块名,通常是工程名
version:版本号
https://mvnrepository.com/ 搜索使用的中央仓库,使用groupId或者artifactId作为搜索条件
<dependencies>
<!--依赖java代码中import -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactid>
<version>5.1.9</version>
</dependency>
</dependencies>
仓库存放 maven使用的插件(各种jar) 和 项目使用的jar(第三方的工具)
仓库的分类:
仓库的使用:
maven仓库的使用不需要人为参与。
开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像—>中央仓库
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
<dependency>
<groupId>junit</groupId>
<artifactid>junit</artifactid>
<version>4.11</version>
<scope>test</ scope>
</dependency>
例如你要测试He1loMaven ,
创建测试类TestHelloMaven
@Test
public void testAdd () {
测试Hel1oMaven的add方法是否正确
}
其中testAdd叫做测试方法,它的定义规则
1.方法是public的,必须的
2.方法没有返回值,必须的
3.方法名称是自定义的,推荐是Test +方法名称
4.在方法的上面加入@Test
maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven可以使用命令,完成项目的清理,编译,测试等等
| 常用命令 | 注释 |
|---|---|
| mvn clean | 清理(会删除原来编译和测试的目录,即 target目录,但是已经install到仓库里的包不会删除) |
| mvn compile | 编译主程序(会在当前目录下生成一个target,里边存放编译主程序之后生成的字节码文件) |
| mvn test-compile | 编译测试程序(会在当前目录下生成一个 target,里边存放编译测试程序之后生成的字节码文件) |
| mvn test | 测试(会生成一个目录surefire-reports,保存测试结果) |
| mvn package | 打包主程序(会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包) |
| mvn install | 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中) |
| mvn deploy | 部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中) |
mvn compile
编译main/java/目录下的java为class文件,同时把class拷贝到 target/classes目录下面把main/resources目录下的所有文件都拷贝到target/classes目录下
maven的插件:maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类
插件可以在自己的项目中设置,最常使用的是maven编译插件。设置项目使用的jdk版本时通过编译插件指定。
pom.xml 文件< build >中设置。
<! --控制配置maven构建项目的参数设置,设置jdk的版本-->
<build>
<!--配置插件-->
<plugins>
<!--配置具体的插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<! --插件的名称-->
<artifactId>maven-compiler-plugin</artifactId>
<! --插件的版本-->
<version>3.8.1</version>
<! --配置插件的信息-->
<configuration>
<!--告诉maven我们的写的代码是在jdk1.8上编译的。-->
<source>1.8</source>
<! --我们的程序应该运行在1.8的jdk上-->
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>