Maven笔记

概述:Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven的主要目标是希望开发人员能在最短的时间内理解开发的完整状态。为了达到这个目标,Maven在下面几个方面做出了努力:简化构建过程、统一构建体系、提供高质量的项目信息、提供开发的最佳实践指南、实现透明的向新特性的迁移、简化构建过程。使用Maven不须要知道一些潜在的或底层的机制,Maven屏蔽了非常多细节

//===============================================================
Maven 核心概念:

Maven的生命周期和插件
	生命周期:项目的构建过程,包括清理,编译,测试,报告,打包,安装,部署
	插件:Maven提供的功能,用来执行清理,编译,测试,报告,打包,安装,部署的程序

1.约定的目录结构:
	项目的目录Hello
		src和pom.xml 平级
		src/main------java(主程序Java文件)和resources(配置文件)
		src/test-------java(测试程序代码)和resources(测试使用的配置文件)

2.坐标
	1.groupId:组织编码,域名倒写
	2.artifactId:项目名称
	3.version:自定义版本号

3.依赖 denpendency  : maven管理依赖
	使用依赖把jar导入你的项目中.
	<dependencies>
		 <dependency>
			  <groupId>junit</groupId>
			  <artifactId>junit</artifactId>
			  <version>4.11</version>
			  <scope>test</scope>
	</dependency>

//===============================================================

一部分
完成一个Java项目,需要做哪些工作呢?
1.分析项目要做什么?知道项目有哪些组成部分?
2.设计项目,通过哪些步骤,使用哪些技术,需要多少人,多长时间.
3.组建团队,招人,购置设备,服务器,软件,笔记本.
4.开发人员写代码.开发人员需要测试自己写的代码. 重复多次的工作.
5.测试人员,测试项目功能是否符合要求.
测试开发人员提交的代码,如果测试有问题—>需要开发人员修改–>再提交代码给测试–>测试人员再测试代码直到通过

2.传统开发项目的问题,没有使用maven管理的项目
1)很多模块里,模块之间有关系,手工管理关系,比较繁琐.
2)需要很多第三方,需要很多jar文件.需要手工从网络中获取各个jar包.
3)需要管理jar的版本,你需要的是mysql15.1.5.jar,我们不能给mysql1.4.0.jar
4)管理jar文件之间的依赖.你的项目要使用a.jar 需要使用b.jar里面的类.
必须首先获取到b.jar才可以,然后才能使用a.jar ,

	a.jar需要b.jar 这个关系叫做依赖,或者你的项目中要mysql的驱动,也可以叫做项目依赖mysql驱动.
	a.class使用b.class , a依赖b类

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

4.构建:项目的构建
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等
maven支持的构建包括有:
1.清理,把之前项目编译的东西删除掉,为新的编译代码做准备.
2.编译,把程序源代码编译为可执行代码,java—>文件 //批量的,waven可以同时把成千上百个文件编译成class
3.测试,maven可以执行测试程序代码,验证你的功能是否正确. //批量的.同时测试很多功能
4.报告,生成测试结果的文件 ,例如测试通过没有?
5.打包,把项目中所有class,或者配置文件等所有资源放到一个压缩文件中,这个压缩文件就是项目的结果文件. .jar或者.war
6.安装:把 打包生成的jar文件,war文件安装到本机仓库.
7.部署,把程序安装好可以执行,

5.maven核心概念
1.POM:一个文件, 名称是pom.xml , pom翻译过来就叫做项目对象模型.
maven把一个项目当作一个模型使用.可以控制maven构建项目的过程,管理jar依赖
2.约定的目录结构:maven项目的目录和文件的位置都是规定的.
3.坐标:是一个唯一的字符串,是用来表示资源的.
4.依赖管理:管理项目中可以使用的jar文件的
5.仓库管理(了解):资源存放的位置.
6.生命周期(了解):maven工具构建项目的过程,
7.插件和目标(了解):执行maven构建的时候用的工具是插件.
8.继承
9.聚合

二部分
1.maven约定的目录结构, 约定是大家都遵守的一个规则.
每一个maven项目在磁盘中都是一个文件夹.
Hello
------src
--------main
-------------java
-------------resources
--------test
-------------java
-------------resources
------pom.xml

2.疑问:mvn compile 编译src/main目录下的所有Java文件.
1)为什么要下载?
maven工具执行的操作需要很多插件(Java类)来完成
2)下载什么了??
jar文件–叫做插件—插件是完成某些功能的.
3)下载的东西存放到哪里
默认仓库 .m2.\repository

执行mvn compile ,结果是在项目的根目录下会生成一个target目录(结果目录),
maven编译的Java程序,最后的class程序文件

3.仓库
1)仓库是什么: 仓库是存放东西的,存放maven使用的jar和我们项目使用的jar
>maven使用的插件
>项目使用的jar(第三方的工具)
2)仓库的分类:
>本地仓库,就是个人计算机上的文件夹,存放各种jar包
>远程仓库:在互联网上的,有网络才能使用仓库
①:中央仓库:最权威的, 所有的开发人员都共享使用的一个集中的仓库
②:中央仓库的镜像:中央仓库的备份,在各大洲,重要的城市都有镜像.
③:私服:在公司内部,在局域网中使用.不是对外使用的.
3)仓库的使用, maven仓库的使用不需要认为参与.
开发人员需要使用mysql驱动—>maven首先查本地仓库---->私服—>中央仓库的镜像---->中央仓库

4.pom:项目对象模型,是一个pom.xml模型
1)坐标 //唯一值,在互联网中唯一标识一个项目的 gav
公司域名倒写
项目名称
版本号
2)packaging :打包后压缩文件的扩展名,默认是jar,web应用是war
//packaging 可以不写 默认是jar
3)依赖 dependencies 和 dependency //相当于import
项目中要使用的各种资源说明, 比如 项目要使用 mysql驱动
4)properties:设置属性
5)build:maven在进行项目的构建时,配置信息,例如指定编译Java使用的jdk的版本

5.maven生命周期 , maven命令 ,maven插件
maven的生命周期: 就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
maven的命令:maven可以独立使用,通过命令完成maven生命周期的执行.
//maven可以使用命令来完成项目的清理.编译,测试,报告,打包,安装,部署
maven的插件:maven命令执行时真正完成功能的是插件,插件就是一些jar文件,一些类.

1)junit测试:是一个专门测试的框架(工具),测试的是类中的方法,每一个方法都是独立测试的,方法是测试的基本单元.
		maven借助单元测试,批量的测试类中的大量方法是否缝合预期标准.

2)使用步骤
	1.加入依赖,在pom.xml中加入单元测试依赖.
	2.在maven项目中的src/test/java目录下创建测试程序.
		推荐的创建类和方法的提示:
			1.测试的名称 是Test+类名
			2.测试的方法名 是Test+方法名称
		
		测试方法的定义规则:
			1.方法必须是public
			2.方法必须没有返回值
			3.方法名是自定义的,推荐是Test+方法名
			4.方法上面加入 @Test		
	3.编译main/java/目录下的Java为class文件,同时把class拷贝到target/classes/目录下
		同时把main/resources目录下的所有文件也拷贝到target/resources目录下

Maven命令:mvn clean , mvn compile ,mvn test-compile . mvn test

三部分:
IDEA 中设置maven IDEA有内置的但是一般不用内置的,因为内置的修改配置不方便.
-DarchetypeCatalog=internal

使用模板创建项目
	1)maven-archetype-quickstart : 普通的Java工程
	2)maven-archetype-webapp:web工程

四部分:
1.依赖范围,使用scpoe表示的
scope的值有 compile test provided , 默认是compile
scope:表示依赖使用的范围,也就是在maven构建项目的哪些阶段中起作用

五部分:
maven常用操作
1.maven的属性设置
设置maven的常用属性
2.maven的全局变量
自定义的属性,
1.在通过自定义标签名声明变量(标签名就是变量名)
2.在pom.xml文件中的其他位置,使用${标签名}使用变量的值.

		自定义全局变量: 一般是用来定义依赖的版本号,当项目中要使用多个相同的版本号,
			要先使用全局变量定义,再使用${变量名}.
	3.资源插件
		<build>
			<resources>
				<resource>
					<directory>src/main/java</ 所在的目录 ---->
					< 包括目录下的 .properties,.xml 文件都会扫描到 ---->
						<include>**/*.properties</include>
						<include>**/*.xml</include>
				</includes>
				<!--filtering选项 false不启用过滤器, *.property已经起到过滤的作用了 ---->
				<filtering>false</filtering>
				</resource>
			</resources>
		</build>
		作用:mybatis课程中会用到这个作用.
			1.默认没有使用resources时候,mven执行编译代码时,会把src/main/resource目录中的文件拷贝到target/classes目录中.
				对于src/main/java目录下的非java文件不处理.
			2.程序有需要把一些文件放在src/main/java目录中,当我在执行Java程序时,需要用到src/main/java目录中的文件,
				就需要告诉maven在mvn compile src/main/java目录下的程序,需要把文件一同拷贝到classes目录.
					此时就需要在<build>中加入<resources>

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 Maven的主要目标是希望开发人员能在最短的时间内理解开发的完整状态。为了达到这个目标,Maven在下面几个方面做出了努力:简化构建过程、统一构建体系、提供高质量的项目信息、提供开发的最佳实践指南、实现透明的向新特性的迁移、简化构建过程。使用Maven不须要知道一些潜在的或底层的机制,Maven屏蔽了非常多细节。

Maven管理多模块应用 //使用分布式开发一定会用到的
commonModel 公共的基础服务
bussinessModel 业务模块 依赖于common模块
applicaiton 可发布的web应用
第三方模块: 包括各类框架,spring mybatis 日志等等.

如何用Maven管理多模块>?
创建一个父工程
1.packaging标签的文本内容必须设置为pom //指定打包的方式,默认是jar
2.把src删除掉

pom是项目对象模型,(Project Object Module) 该文件是可以被子工程继承的.
maven多模块管理其实就是让它的子模块pom文件

父工程加强管理子模块的所有依赖
	<dependencyManagement>

父工程在properties标签里面管理依赖的版本号
	自定义标签, 构成=项目名称+"version"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值