Day139.Maven核心概念 -Maven
Maven核心概念一、Maven工程约定的目录结构【掌握】约定是大家都遵循的一个规则,约定可以破坏,但没必要每一个maven项目在磁盘中都是一个文件夹Hello:根目录,也就是工程名src:源代码main:主程序java:主程序的 java 源码resources:主程序的配置文件test:测试程序java:测试程序的 java 源码resources:测试程序的配置文件pom.xml:Maven
Maven核心概念
一、Maven工程约定的目录结构【掌握】
-
约定是大家都遵循的一个规则,约定可以破坏,但没必要
-
每一个maven项目在磁盘中都是一个文件夹
Hello:根目录,也就是工程名
src:源代码
main:主程序
java:主程序的 java 源码
resources:主程序的配置文件
test:测试程序
java:测试程序的 java 源码
resources:测试程序的配置文件
pom.xml:Maven 工程的核心配置文件。
- 一般情况下,我们习惯上采取的措施是:约定>配置>编码
maven 的 pom.xml 记录的关于构建项目的各个方面的设置,maven 从 pom.xml 文件开始,按照助约定的工程目录编译,测试,打包,部署,发布项目。
二、mvn compile 编译src/main目录下的所有java文件
1、为什么要下载
maven工具执行的操作需要很多插件(java类型—jar文件)完成的
2、下载什么东西
jar文件—插件—插件是完成某些功能
3、下载的东西存到哪里
默认仓库:(本机仓库)
C:\Users\用户名.m2\repository
- 执行mvn compile,结果是在项目的根目录下会生成一个target文件夹(结果目录),maven编译的java程序,最后的class文件都放在target目录中
按照如下步骤,实现第一个 maven 项目,以 maven 推荐的约定方式创建目录,类文件。
1.某个目录中创建文件夹 Hello
2.在 Hello 中创建子目录 src
3.拷贝 pom.xml 到 Hello 目录和 src 是同级放置的。
4.进入 src 目录,创建 main, test 目录
5.进入 main 目录,创建 java,resources 目录。
6.进入 java 目录,创建目录 com/bjpowernode/
6.在 com/bjpowernode/目录下创建 HelloMaven.java 文件,定义 int addNumber(int n1,n2){ return n1+n2};
定义 public static void main(String args[]) { System.out.prinltn(“Hello Manven”); //也可以调用 addNumber()方法 }
7.进入到 Hello 目录在,执行 mvn compile
8.进入到 target/classes 目录执行通过命令行执行 java com.bjpowernode.HelloMaven
4、设置本机存放资源的目录位置(设置本机仓库)
①修改maven的配置文件,maven安装目录/conf/settings.xml(先备份settings.xml)
②修改localRepository指定你的目录(不要使用中文目录)
三、仓库
1、仓库是什么
仓库是存放东西的,存放maven使用的jar和项目使用的jar
—maven使用的插件(各种jar)
—我们项目的jar(第三方工具)
2、仓库的分类
①本地仓库:个人计算机上的文件夹,来存放各种jar
②远程仓库:在互联网上的,需要使用网络才能访问
1)中央仓库:最权威的,所有开发人员都共享使用的一个集中仓库
http://repo.maven.apache.org:中央仓库地址
2)中央仓库的镜像:中央仓库的备份,在各大洲,重要的城市都会有镜像
3)私服:在公司内部,在局域网中使用,不是对外使用的
3、仓库的使用
- maven仓库的使用不需要认为参与。
访问顺序:
如果开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服—>镜像—>中央仓库
四、pom文件(maven的灵魂)【掌握】
pom:项目对象模型
1、坐标:三个元素【掌握】
必须有且是唯一值,在互联网中唯一标识一个项目的
- modelVersion 标签:
Maven 模型的版本,对于 Maven2 和 Maven3 来说,它只能是 4.0.0
- groupId标签
组织 id,一般是公司域名的倒写。 格式可以为:
①域名倒写。 例如 com.baidu
②域名倒写+项目名。例如 com.baidu.appolo
- artifactId标签
项目的版本号。如果项目还在开发中,是不稳定版本,
通常在版本后带-SNAPSHOT
version 使用三位数字标识,例如 1.1.0
https://mvnrepository.com/:搜索使用的中央仓库,使用groupId或artifactId作为搜索条件
groupId 、artifactId 、version 三个元素生成了一个Maven项目的基本坐标;
在众多的maven项目中可以唯一定位到某一个项目。坐标也决定着将来项目在仓库中的路径及名称。
2、packaging
项目打包的类型,可以使 jar、war、rar、ear、pom。
默认是 jar,web应用是war
3、dependencies 与dependency【依赖】【掌握】
- dependencies 和 dependency
相当于java中的 import
项目中要使用资源的各种说明,比如项目需要使用mysql驱动
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
4、properties【配置属性】
properties 是 用 来 定 义 一 些 配 置 属 性 的 ,
例 如project.build.sourceEncoding(项目构建源码编码方式),
可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<junit.version>5.6.2</junit.version>
</properties>
5、build【构建】
Maven在进行项目的构建时,配置信息,例如指定编译java代码使用的jdk的版本
五、坐标【gav】【掌握】
Maven 把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库中可以唯一定位一个 Maven 项目。
- groupId:组织名,通常是公司或组织域名倒序+项目名
- artifactId:模块名,通常是工程名
- version:版本号
groupId、artifactId 和 version 决定项目在仓库中的路径,artifactId 和 version 决定 jar 包的名称
六、依赖【dependency】【掌握】
-
一个 Maven 项目正常运行需要其它项目的支持,Maven 会根据坐标自动到本地仓库中进行查找。对于程序员自己的 Maven 项目需要进行安装,才能保存到仓库中
-
不用 maven 的时候所有的 jar 都不是你的,需要去各个地方下载拷贝,用了 maven 所有的 jar 包都是你的,想要谁,叫谁的名字就行。maven 帮你下载。
七、Maven 的生命周期、命令与插件
- maven的生命周期:
就是maven构建项目的过程,清洁、编译、测试、报告、打包、安装、部署
- maven的命令:
maven独立使用,通过命令,完成maven生命周期的执行。
maven可以通过命令,来完成项目的清理、编译、测试等
- maven的插件:
maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,一些类
1、单元测试:用的是junit,junit是一个专门测试的框架(工具)
- junit测试的内容
测试的是类中的方法,每一个方法都可以是独立测试,方法是测试的基本单位(单元)。
- 作用
maven借助单元测试,批量的测试你类中的大量方法是否符合预期
- 使用的步骤
1、加入依赖,在pom.xml加入单元测试依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
2、在maven项目中的src/test/java目录下,创建测试程序
推荐的创建类和方法的提示:
①测试类的名称 是:Test+你要测试的类名
②测试方法的名称 是:Test+方法名称
例如你要测试HelloMaven
—创建测试类TestHelloMaven
@Test
public void testAdd(){
//测试HelloMaven的add方法是否正确
}
其中testAdd()叫做测试方法,它的定义规则:
①方法是public(必须的)
②方法没有返回值(必须的)
③方法的名称是自定义的(推荐是Test+方法名称)
④在方法上面加注解@Test
2、常用命令
- 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 容器中)。
3、插件
- 插件可以在自己的项目中设置,最常使用的是 maven 编译插件。
- 设置项目使用的 jdk 版本时通过编译插件指定。pom.xml 文件< build >标签来设置
<!--控制配置 maven构建项目的参数设置,设置jdk的版本-->
<build>
<!--配置插件-->
<plugins>
<!--配置具体的插件-->
<plugin>
<!--插件名称-->
<groupId>org.apache.maven.plugins</groupId>
<!--插件版本-->
<artifactId>maven-war-plugin</artifactId>
<!--插件版本-->
<version>3.3.0</version>
</plugin>
</plugins>
</build>
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)