Maven的概念

1.maven的作用

1.1 增加第三方Jar (spring-context.jar spring-aop.jar …)

1.2 jar包之间的依赖关系 (spring-context.jar 自动关联下载所有依赖的Jar,并且不会冲突)

1.3 将项目拆分成若干个模块

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中 即可执行运行

自动化构建工具maven:将 原材料(java、js、css、html、图片)->产品(可发布项目)

编译-打包-部署-测试 --> 自动构建

3.配置maven

3.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/cc/.m2/repository
修改本地仓库: D:/mvnrep

3.2.使用maven

  • 约定优于配置
  • maven约定的目录结构:
项目
		-src				
			--main			:程序功能代码
				--java		 java代码  (Hello xxx)
				--resources      资源代码、配置代码
			--test			:测试代码
				--java			
				--resources	
	        pom.xml
  • 配置信息
<groupId>域名翻转.大项目名</groupId>
<groupId>org.lanqiao.maven</groupId>

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


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

4.依赖

commons-fileupload.jar --> commons-io.jar
A中的某些类 需要使用B中的某些类,则称为A依赖于B
在maven项目中,如果要使用 一个当时存在的Jar或模块,则可以通过 依赖实现(去本地仓库、远程仓库去寻找)

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

maven常见命令: (第一次执行命令时,因为需要下载执行该命令的基础环境,所以会从远程仓库下载该环境到本地仓库)
编译: ( Maven基础组件 ,基础Jar)
mvn compile: --只编译main目录中的java文件,作用是将src/main/java下的文件编译为class文件输出到target目录下
mvn test: 测试
mvn package: 打成jar/war
mvn install: 将开发的模块 放入本地仓库,供其他模块使用 (放入的位置 是通过gav决定)

mvn clean: 删除target目录(删除编译文件的目录)
运行mvn命令,必须在pom.xml文件所在目录

依赖:
A jar -> B jar

junit
junit
4.0
test

依赖
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

	    <exclusions>
	    	<exclusion>
	    		<groupId>org.springframework</groupId>
				 <artifactId>spring-beans</artifactId>
	    	</exclusion>
	    
	    </exclusions>

依赖:
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

HelloWorldTime ->HelloWorld2 ->junit

4依赖原则:为了防止冲突
a.路径最短优先原则
b.路径长度相同:
i.在同一个pom.xml文件中有2个相同的依赖(覆盖):后面声明的依赖 会覆盖前面声明的依赖 (严禁使用本情况,严禁在同一个pom中声明2个版本不同的依赖)
ii.如果是不同的 pom.xml中有2个相同的依赖(优先):则先声明的依赖 ,会覆盖后声明的依赖

(JDK只能够识别 source folder中的源码)

多个maven项目(模块)之间如何 依赖: p项目 依赖于->q项目

  1. p项目 install 到本地仓库
  2. q项目 依赖:


    org.lanqiao.maven
    HelloWorld2
    0.0.1-SNAPSHOT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值