Maven入门

1.Maven的作用

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

2.Maven概念:

是一个基于Java平台的 自动化构建工具
make-ant-maven-gradle
清理:删除编译的结果,为重新编译做准备。
编译:java->class
测试: 针对于 项目中的关键点进行测试,亦可用 项目中的测试代码 去测试开发代码;
报告:将测试的结果 进行显示
打包: 将项目中包含的多个文件 压缩成一个文件, 用于安装或部署。 (java项目-jar、web项目-war)
安装:将打成的包 放到 本地仓库,供其他项目使用。
部署:将打成的包 放到 服务器上准备运行。
–将java、js、jsp等各个文件 进行筛选、组装,变成一个 可以直接运行的项目
– 大米->米饭
-Eclipse中部署的web项目可以运行
-将Eclipse中的项目,复制到tomcat/webapps中则不能运行
-项目可以在webappas中直接运行
Eclipse中的项目 ,在部署时 会生成一个 对应的 部署项目(在wtpwebapps中),区别在于: 部署项目 没有源码文件src(java),只有编译后的class文件和jsp文件
因为二者目录结构不一致,因此tomcat中无法直接运行 Eclips中复制过来的项目 (因为 如果要在tomcat中运行一个项目,则该项目 必须严格遵循tomcat的目录结构)
Eclipse中的项目 要在tomcat中运行,就需要部署: a.通过Eclipse中Add and Remove按钮进行部署
b.将Web项目打成一个war包,然后将该war包复制到tomcat/webapps中 即可执行运行
idea用tomcat部署项目,不是将项目放到tomcat的webapps中,而是部署到项目路径的out的文件中。
自动化构建工具maven:将 原材料(java、js、css、html、图片)->产品(可发布项目)
编译-打包-部署-测试 --> 自动构建
1.下载配置maven
a.配置JAVA_HOME
b.配置MAVEN_HOME : D:\apache-maven-3.5.3\bin
M2_HOME
c.配置path
%MAVEN_HOME%\bin
d.验证
mvn -v
e.配置本地仓库 maven目录/conf/settings.xml
默认本地仓库 :C:/Users/YANQUN/.m2/repository
修改本地仓库: <localRepository>D:/mvnrep</localRepository>
2.使用maven
约定 优于 配置
硬编码方式:job.setPath(“d:\abc”) ;
配置方式:
job
conf.xml d:\abc
约定:使用默认值d:\abc
job

Maven目录结构

A.Eclipse

B.Idea

在这里插入图片描述

<groupId>域名翻转.大项目名</groupId>
	<groupId>org.lanqiao.maven</groupId>

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


	<version>版本号</version>
	<version>0.0.1-SNAPSHOT</version>
依赖:
commons-fileupload.jar --> commons-io.jar
A中的某些类 需要使用B中的某些类,则称为A依赖于B
在maven项目中,如果要使用 一个当时存在的Jar或模块,则可以通过 依赖实现(去本地仓库、中央仓库去寻找)
执行mvn: 必须在pom.xml所在目录中执行
maven常见命令: (第一次执行命令时,因为需要下载执行该命令的基础环境,所以会从中央仓库下载该环境到本地仓库)
编译: ( Maven基础组件 ,基础Jar)
mvn compile --只编译main目录中的java文件

在这里插入图片描述

在idea上操作maven(双击)

在这里插入图片描述

结果

在这里插入图片描述

mvn test 测试

在这里插入图片描述

在idea上操作maven

在这里插入图片描述

结果

在这里插入图片描述

mvn package 打成jar/war

在这里插入图片描述
在这里插入图片描述

在idea上操作maven

在这里插入图片描述

结果

在这里插入图片描述
在这里插入图片描述

mvn install 将开发的模块 放入本地仓库,供其他模块使用 (放入的位置 是通过gav决定)

在这里插入图片描述
在这里插入图片描述

mvn clean 删除target目录(删除编译文件的目录)
mvn clean之前

在这里插入图片描述

mvn clean之后

在这里插入图片描述
在这里插入图片描述

在idea上操作maven

在这里插入图片描述

结果(项目中没有target目录)

在这里插入图片描述

运行mvn命令,必须在pom.xml文件所在目录
依赖:
A jar -> B jar
<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.0</version>
			<scope>test</scope>
		</dependency>
依赖
1.依赖的范围、依赖的有效性
compile(默认) test provided

在这里插入图片描述

2.依赖排除
A.jar ->B.jar
当我们通过maven引入A.jar时,会自动引入B.jar
A.jar(x.java ,y.java,z.java) B.jar(p.java c.java i.java)
A.jar和B.jar之间的 依赖的本质:z.java ->c.java
排除依赖包,排除不用指定版本
 <dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-context</artifactId>
		    <version>4.3.7.RELEASE</version>
		    
		    <!-- 排除依赖 beans -->
		    <exclusions>
		    	<exclusion>
		    		<groupId>org.springframework</groupId>
   					 <artifactId>spring-beans</artifactId>
		    	</exclusion>
		    
		    </exclusions>
		    
		</dependency>
强调:每次更新pom.xml文件后一定要重新导入jar

在这里插入图片描述

依赖:
a.commons-fileupload.jar commons-io.jar :虽然我们实际开发时,认为二者jar必须关联,但是maven可能不这么认为。
b.如果X.jar 依赖于Y.jar,但是在引入X.jar之前 已经存在了Y.jar,则maven不会再在 引入X.jar时 引入Y.jar
3.依赖的传递性
A.jar-B.jar->C.jar
要使 A.jar ->C.jar:当且仅当 B.jar 依赖于C.jar的范围是compile
多个maven项目(模块)之间如何 依赖: q项目 依赖于->p项目
1. p项目 install 到本地仓库
2. q项目 依赖:
<!-- 本项目  依赖于HelloWorld2项目 -->
 		 <dependency>
 		 	 <groupId>org.lanqiao.maven</groupId>
			  <artifactId>HelloWorld2</artifactId>
			  <version>0.0.1-SNAPSHOT</version>
 		 </dependency>
打包方式:
java工程——jar
web项目-war
父工程-pom
继承实现步骤:
1.建立父工程: 父工程的打包方式为pom
2.在父工程的pom.xml中编写依赖:
<dependencyManagement>
  	<dependencies>
  		<dependency>
3.子类:
<!-- 给当前工程 继承一个父工程:1加入父工程坐标gav   2当前工程的Pom.xml到父工程的Pom.xml之间的 相对路径  -->
 	 <parent>
 	 	<!-- 1加入父工程坐标gav -->
 	 	  <groupId>org.lanqiao.maven</groupId>
		  <artifactId>B</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
		 <!-- 2当前工程的Pom.xml到父工程的Pom.xml之间的 相对路径 --> 
		  <relativePath>../B/pom.xml</relativePath>
 	 </parent>
4.在子类中 需要声明 :使用那些父类的依赖
 <dependency>
	  		  <!-- 声明:需要使用到父类的junit (只需要ga) -->
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
			  </dependency>
聚合:
Maven项目能够识别的: 自身包含、本地仓库中的
Maven2依赖于Maven1,则在执行时:必须先将Maven1加入到本地仓库(install),之后才能执行Maven2
以上 前置工程的install操作,可以交由“聚合” 一次性搞定。。。
聚合的使用:
在一个总工程中配置聚合: (聚合的配置 只能配置在(打包方式为pom)的Maven工程中)
modules
<modules>
  		<!--项目的根路径  -->
  	  <module>../Maven1</module>
  	  <module>../Maven2</module>
  	  
  </modules>
配置完聚合之后,以后只要操作总工程,则会自动操作 改聚合中配置过的工程
注意:clean命令 是删除 target目录,并不是清理install存放入的本地仓库
聚合:
Maven将一个大工程拆分成 若干个子工程(子模块)
聚合可以将拆分的多个子工程 合起来
继承:
父->子工程,可以通过父工程 统一管理依赖的版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值