Maven学习笔记

本文详细介绍了Maven的作用、概念以及其能实现的功能,包括部署、配置、pom.xml解析、mvn命令的使用、依赖管理、Eclipse中创建Maven工程的步骤、生命周期、统一JDK版本、继承和聚合特性,最后讲解了如何用Maven部署Web项目到Tomcat。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven的作用

1.管理jar
	增加第三方jar包
	管理jar包之间的依赖关系  自动关联下载所有依赖的jar,并且不会冲突
	
2.将项目拆分成若干个模块

maven的概念:

是一个基于Java平台的 自动化 构建工具   时间顺序   make-->ant-->maven-->gradle
自动化构建工具 : 将原材料(java,js,css,html,图片)  整合成产品

maven能实现的功能:

清理		删除编译的结果,为重新编译做准备
编译		java-->class
测试		单元测试       针对于项目中的关键点进行测试,亦可用项目中的测试代码,去测试开发代码
报告		将测试的结果进行显示
打包		将项目中包含的多个文件,压缩成一个文件,,用于安装和部署(java项目-->jar   web项目-->war)
安装		将打成的包,放到  本地仓库   供其他项目使用
部署		将打成的包,放到  服务器 准备运行
	部署就是,将java,js,jsp等各个文件 进行筛选,组装,  变成一个可以直接运行的项目

部署:

Eclipse中部署的web项目可以运行
将Ecilipse中的项目复制到 tomcat/webapps中  不能运行
web项目可以在webapps中直接运行
Eclipse中的项目,在部署时,会是生成一个部署项目,区别在于:  
	部署的项目,没有源码文件,只有编译后的class文件和jsp文件
因为二者目录结构不一样,tomcat无法运行Eclipse复制的项目
Eclipse中的项目要在tomcat中运行,就需要部署
	1.通过eclipse中的add and remove 按钮,进行部署
	2.将web项目打成一个war包,将该war包复制到tomcat里面的webapps中,即可直接运行

下载配置maven

下载好解压
环境变量:
	检查配置JAVA_HOME
	配置MAVEN_HOME	:    D:\study\apache-maven-3.6.3
	配置path		:	%MAVEN_HOME%\bin
	验证:cmd   mvn -v
配置本地仓库:
	默认本地仓库   	Default: ${user.home}/.m2/repository
	修改成本地目录	<localRepository>D:/maven</localRepository>

使用maven

软件开发原则:	约定  优于 配置
maven约定的目录结构:
项目
	-src
		-main				序功能代码
			-java			java代码
			-resources		资源代码,配置代码
		-test				测试代码
			-java			
			-resources		
	-pom.xml				项目对象模型      将一个项目看成一个对象

pom.xml: --------------其中的jav 起到定位作用

<groupId>域名反转.项目名</groupId>
<groupId>org.fzz.maven</groupId>

<artifactId>子模块名</artifactId>
<artifactId>HelloWorld</artifactId>

<version>版本号</version>
<version>0.0.1-SNAPSHOT</version>

执行mvn: 必须在pom所在的目录中执行

mvn常见命令:
编译:mvn compile  	只编译main目录中的代码			
测试:mvn test  	只进行测试						
打包:mvn package	打包
	  mvn install 	放入本地仓库,供其他模块使用 (放入的位置,通过jav决定)
清理:mvn clean		删除target目录(删除编译文件的目录)
(第一次执行时,会下载一些基础组件,以后执行就不需要了)

关于私服: 通过nexus搭建环境

依赖:

项目中实现:
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.0</version>
	<scope>test</scope>
</dependency>
依赖的范围以及有效性:
compile(默认)		编译时、测试时、运行时  都能拿到
test 				只有测试时      		能拿到
provided			编译时、测试时  		能拿到
依赖排除:
当我们通过maven引入a.jar时,会自动引入b.jar
	a.jar(x.java,y.java,z.java)     b.jar(q.java,w.java,e.java)
	a.jar和b.jar的依赖关系   z.java--->e.java
	但是我不需要用到a.jar中的z.java,  所以没有必要再引入b.jar
排除:
	<exclusions>
		<exclusion>
			<groupId>commons-io</groupId>
		    <artifactId>commons-io</artifactId>
		</exclusion>
	</exclusions>
依赖的传递性:
a.jar 依赖 b.jar        b.jar依赖 c.jar
要使a.jar--->c.jar      要求b.jar 和 c.jar 的依赖关系必须是compile
多个maven项目之间如何依赖:
	a项目 依赖于 b项目
	1.b项目 install到本地仓库
	2.a项目依赖
		<dependency>
		   <groupId>org.fzz.maven</groupId>
		  <artifactId>HelloWorld</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
		</dependency>
依赖原则: 为了防止冲突
路径最短优先原则
如果路径长度相同:
	(严禁在同一个pom中声明两个相同依赖)
	如果在同一个pom.xml文件中有两个相同的依赖:(覆盖)   后面声明的依赖,会覆盖前面的依赖 
	如果是不同的pom.xml中,有两个相同的依赖:(优先)     则先声明的依赖,会覆盖后声明的依赖

在Eclipse中创建maven工程:

1.在Eclipse中配置maven: (只要一次配置一次)
	配置maven版本
	配置本地仓库   设置settings.xml	
2.在Eclipse中,编写完pom.xml依赖以后,需要maven-update project
3.执行package指令
会依次执行
resoures
compile
test
package
maven生命周期:
生命周期与构建的关系:当我们执行package命令,
实际执行的是resoures compile test package
生命周期包含三个阶段:
  clean lifecycle:	清理			包含(pre-clean--> clean--> post-clean)
default lifecycle:  默认(常用)
   site lifecycle:  站点			包含(pre-site--> site--> post-site--> site-deploy)

统一项目的jdk:

build path: 删除旧版本,增加新版本
右键 项目属性  project Factors - java version 改成新版本
也可以通过maven统一jdk版本:
在pom.xml中添加以下内容
<profiles>
	<profile>
		<id>jdk-1.x</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.x</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.x</maven.compiler.source>
			<maven.compiler.target>1.x</maven.compiler.target>
			<maven.compiler.compilerVersion>1.x</maven.compiler.compilerVersion>
		</properties>
	</profile>
</profiles>

maven继承:

打包方式:
java工程   jar
web项目    war
父工程     pom
继承实现
1.建立父工程: 父工程的打包方式是pom
2.在父工程的pom.xml中编写依赖:
	<dependencyManagemane>
		<dependencise>
			<dependency>
				<groupId>xxx</groupId>
				<artifactId>xxx</artifactId>
				<version>xxx</version
			</dependency>		
		</dependencies>
	</dependencyManagemane>
3.子工程:给当前工程继承一个父工程    1.加入父工程的gav,2当前工程到父工程的pom.xml之间的相对路径
	<parent>
		<groupId>org.fzz.maven</groupId>
		<artifactId>B</artifactId>
		<version>0.0.1-SNAPSHOT</version
		<relativePath>../B/pom.xml</relativePath>
	</parent>
4.在子工程中需要声明: 使用哪些父工程中的依赖
	<dependency>
		<groupId>xxx</groupId>
		<artifactId>xxx</artifactId>
	</dependency>	

maven聚合:

不使用聚合时:
	maven项目能够识别的:  自身的,本地仓库的
	Maven1依赖于Maven2,在执行Maven2时,必须先将Maven1加入到本地仓库    执行install
如果需要依赖的项目特别多时,可以用聚合可以一次搞定,
使用聚合:
在一个总工程中配置聚合:    (只能配置在打包方式为pom的Maven工程中)
	<modules>
		<!-- 项目的根路径 -->
		<module>../Maven1</module>
		<module>../Maven2</module>
	</modules>
配置完聚合之后,只要操作总工程,则会自动操作该聚合中配置过的工程

Maven部署Web项目: 方式要选择war包

将Web项目做完以后,打成war包,放进tomcat的webapps文件夹中,启动tomcat就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值