Maven

Maven有什么作用

1、maven可以管理jar文件
2、自动下载jar和他的文档,源代码
3、管理jar直接的依赖,a.jar需要b.jar, maven会自动下载b
4、管理需要的jar版本
5、编译程序,把java编译为class
6、测试你的代码是否正确
7、打包文件,形成jar文件或者war文件
8、部署项目

构建

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

maven支持的构建包括:

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

2、(批量)编译,把项目的源代码编译为执行代码(java-class文件)
-----maven可以同时把成百上千的文件编译为class-----
-----javac不一样,javac一次编译一个文件-----

3、(批量)测试,maven可以执行测试程序代码,验证你的功能是否正确,maven同时执行多个测试代码,同时测试很多功能

4、报告,生成测试结果的文件,测试通过没有。

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

6、安装,把5中生成的文件jar,war安装到本地仓库

7、部署,把程序安装好,可以执行。

Maven的核心概念

1、POM :
一个文件,名称是pom.xml,翻译过来是项目对象模型(Project Object Model)
Maven把一个项目当做一个模型来使用,控制maven构建项目的过程,管理jar依赖

2、约定的目录结构:
maven项目的目录和文件的位置都是规定的
u
3、坐标:
是一个唯一的字符串,用来表示资源的。

4、依赖管理:
管理项目可以使用的jar文件

5、(了解)仓库管理:
资源存放的位置

6、(了解)生命周期:
maven构建项目的过程就是生命周期

7、(了解)插件和目标:
执行maven构建的时候用的工具是插件

8、继承:子继承父
9、聚合:归纳

maven约定的目录结构,

约定是大家都遵守的一个规则,每一个maven项目在磁盘中都是一个文件夹(项目Hello)

Hello/
 	---/src
 	
 	------/main				//放主程序java代码和配置文件
 	---------/java 			//程序包和包中的java文件
 	---------/resources		//java程序中要使用的配置文件
 	
 	------/test 			//放测试程序代码和文件的(可以没有)
 	---------/java			//测试程序包和包中的java文件
	---------/resources 	//测试java程序中要使用的配置文件
 	
 	---pom.xml				//maven的核心文件(maven项目必须有)

坐标

是用来指定项目的唯一值

  <groupId>com.bjpowernode</groupId>
  <artifactId>ch01-maven</artifactId>
  <version>1.0-SNAPSHOT</version>

首次使用Maven下载的资源默认仓库位置

C:\Users\(登陆操作系统用户名)Administrator.m2\repository

https://repo.maven.apache.org:中央仓库的地址

执行mvn compile,结果是在项目的根目录下声称target,(结果目录)
maven编译的java程序,最后的class文件都放在target目录中

仓库

仓库是存放东西的,存放maven使用的jar和我们项目使用的jar

maven使用的插件(各种jar)
项目使用的jar(第三方的工具)

仓库的分类

1、本地仓库。就是个人计算机中的文件夹
2、远程仓库,在互联网上,使用网络的人才能使用得仓库
	(1)中央仓库,最权威的,所有开发人员都共享使用的一个集中的仓库
			https://repo.maven.apache.org:中央仓库的地址
	 (2)中央仓库的镜像:就是中央仓库的备份,在各大洲和一些重要的城市都有镜像
	 (3)私服:是在公司的内部,在局域网中使用的,不是对外的。
www.mvnrepository.com:搜索使用的中央仓库,使用groupId或者artifactId作为搜索条件

仓库的使用
maven仓库的使用不需要人为参与。
开发人员需要使用mysql驱动—>maven首先查本地仓库—>私服---->镜像—>中央仓库

pom文件

项目对象模型:pom.xml文件
基本信息:

modelVersion:只能是4.0
1、坐标(唯一的表示一个项目)
	groupId:组织id,用来指定组织名称,是一个唯一值:
						域名倒写:com.baidu	
						域名倒写+项目名:com.baidu.appolo	
	artifactId:项目名称,也是模块名称,对应groupId中的子项目
	version:使用三位数字表示,1.0.0
			 可以在版本后带SNAPSHOT,快照(不稳定的版本)
 2、packaging(可以不写):打包后压缩文件的扩展名,默认是jar,web应用是war
 3、依赖
 	dependencies和dependency,相当于java代码中的import
 		项目中要使用各种资源说明,比如要使用mysql驱动
 		<dependencies>
 			<dependency>
 				<groupId>mysql</groupId>
 				<artifactId>mysql-connector-java</artifactId>
				<version>5.1.9</version>
			</dependency>
		</dependencies>
4、properties:设置属性
5、build:maven在进行项目的构建时,配置信息,例如指定编译java代码使用的jdk版本等

Maven的生命周期、命令、插件

生命周期:
就是Maven构建项目的过程,清理、编译、测试、报告、打包、安装、部署

命令:
maven独立使用,通过命令,完成maven的生命周期的执行
maven可以使用命令可以完成项目的清理、编译等等

mvn clean  清理(删除target)
mvn compile 编译主程序(生成target目录,存放主程序后生成的字节码文件)
mvn test-compile 编译测试程序(生成target,存放测试程序后生成的字节码文件)
mvn test 测试(生成一个目录surefire-reports,保存测试结果)
mvn package 打包主程序(会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包)
mvn install 安装主程序(会把本工程打包,并且按照本工程的坐标保存到本地仓库中)
mvn deploy 部署主程序(不仅会打包、保存本地、还会保存到私服仓库中并部署到web容器中)
//以上命令必须进入pom.xml所在目录!
插件:
Maven命令执行时,真正完成功能的是插件,插件就是一些jar文件(一些类)

(1)单元测试(测试方法),用的是junit,junit是一个专门测试的框架(工具)。

junit测试的内容:测试的是类中的方法,每一个方法都是独立测试的。方法是测试的基本单位(单元)。
maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。

2)使用步骤

  1.加入依赖,在pom.xml加入单元测试依赖
	  	 <!-- 单元测试 -->
		 <dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
 2.在maven项目中的src/test/java目录下,创建测试程序。
    推荐的创建类和方法的提示:
	 1.测试类的名称 是Test + 你要测试的类名
	 2.测试的方法名称 是:Test + 方法名称

	 例如你要测试HelloMaven ,
	 创建测试类 TestHelloMaven
   @Test
	 public void testAdd(){
      测试HelloMaven的add方法是否正确
	 }


	 其中testAdd叫做测试方法,它的定义规则
	 1.方法是public的,必须的
	 2.方法没有返回值, 必须的
	 3.方法名称是自定义的,推荐是Test + 方法名称
	 4.在方法的上面加入 @Test



 3)mvn compile 
   编译main/java/目录下的java 为class文件, 同时把class拷贝到 target/classes目录下面
	把main/resources目录下的所有文件 都拷贝到target/classes目录下

第三部分:

 1.在idea中设置maven ,让idea和maven结合使用。 
   idea中内置了maven ,一般不使用内置的, 因为用内置修改maven的设置不方便。
	使用自己安装的maven, 需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息
配置的入口 ①:配置当前工程的设置, file--settings ---Build, Excution,Deployment--Build Tools
               --Maven 
					   Maven Home directory: maven的安装目录
						User Settings File :  就是maven安装目录conf/setting.xml配置文件
						Local Repository :    本机仓库的目录位置

				   --Build Tools--Maven--Runner  
					  VM Options : archetypeCatalog=internal
					  JRE: 你项目的jdk


                archetypeCatalog=internal , maven项目创建时,会联网下载模版文件,
					  比较大, 使用-DarchetypeCatalog=internal,不用下载, 创建maven项目速度快。



            ②:配置以后新建工程的设置, file--other settings--Settings for New Project

2.使用模版创建项目

1)maven-archetype-quickstart : 普通的java项目 
2)maven-archetype-webapp : web工程

依赖范围

使用scope表示的。scope的值有 compile, test, provided ,默认是compile
scope:表示依赖使用的范围,也就是在maven构建项目的那些阶段中起作用。
maven构建项目 编译, 测试 ,打包, 安装 ,部署 过程(阶段)
junit的依赖范围是 test

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
     <groupId>a</groupId>
     <artifactId>b</artifactId>   b.jar
     <version>4.11</version>
</dependency>
 <dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>          servlet.jar
  <scope>provided</scope> 提供者
</dependency>

你在写项目的中的用到的所有依赖(jar ) ,必须在本地仓库中有。
没有必须通过maven下载, 包括provided的都必须下载。

你在servlet需要继承HttpServlet( provided) , 你使用的HttpServlet是maven仓库中的。

当你的写好的程序, 放到 tomat服务器中运行时, 此时你的程序中不包含servlet的jar
因为tomcat提供了 servlet的.jar

第五部分:
maven常用操作

  1.maven的属性设置
     <properties> 设置maven的常用属性
  2.maven的全局变量
     自定义的属性,1.在<properties> 通过自定义标签声明变量(标签名就是变量名)
	                 2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值
自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,
先使用全局变量定义, 在使用${变量名}

3.资源插件

  <build>
	<resources>
	<resource>
	<directory>src/main/java</directory>
	<includes>
	<include>**/*.properties</include>
	<include>**/*.xml</include>
	</includes>
	<filtering>false</filtering>
	</resource>
	</resources>
  </build>

作用: mybatis课程中会用到这个作用

  1. 默认没有使用resources的时候, maven执行编译代码时, 会把src/main/resource目录中的文件拷贝到target/classes目录中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值