Maven玩法(4)

一、依赖管理

1、直接依赖和间接依赖
	如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。
2、依赖的范围
	①compile
		[1]main目录下的Java代码可以访问这个范围的依赖
		[2]test目录下的Java代码可以访问这个范围的依赖
		[3]部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
		例如:对Hello的依赖。主程序、测试程序和服务器运行时都需要用到。
	②test
		[1]main目录下的Java代码不能访问这个范围的依赖
		[2]test目录下的Java代码可以访问这个范围的依赖
		[3]部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
		例如:对junit的依赖。仅仅是测试程序部分需要。
	③provided
		[1]main目录下的Java代码可以访问这个范围的依赖
		[2]test目录下的Java代码可以访问这个范围的依赖
		[3]部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
		例如:servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要。
3、依赖的传递性
	A->B->C.C中compile对A可见,test和provided不可见
4、依赖的原则
		1、路径最短者优先
				项目A  ->	 项目B  ->  项目C
				     |				|				 |
				log4j1.4	 log4j1.4     log4j1.7
		2、路径相同时先声明者优先(指的是dependency标签配置的先后顺序)
5、依赖的排除
		<exclusions>
			<exclusion>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging</artifactId>
			</exclusion>
		<exclusions>
		传递过来的包排除后,可以自己再定义另一个版本的依赖。如果不排除,自己直接配也会优先选用自己配的。
6、统一管理目标jar包的版本
	<properties>
		<spring.version>4.0.1.RELEASE</spring.version>
	</properties>
	<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
	</dependency>

二、仓库

1、分类
	[1]本地仓库:为当前本机电脑上的所有Maven工程服务。
	[2]远程仓库
		(1)私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
		(2)中央仓库:架设在Internet上,为全世界所有Maven工程服务。
		(3)中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。
2、本地仓库中的文件
	[1]Maven的插件
	[2]我们自己开发的项目的模块
	[3]第三方框架或工具的jar包
	※不管是什么样的jar包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。

三、生命周期

1、Clean生命周期一共包含了三个阶段:
		①pre-clean 执行一些需要在clean之前完成的工作 
		②clean 移除所有上一次构建生成的文件 
		③post-clean 执行一些需要在clean之后立刻完成的工作
2、Site生命周期(mvn site)
		①pre-site 执行一些需要在生成站点文档之前完成的工作
		②site 生成项目的站点文档
		③post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
		④site-deploy 将生成的站点文档部署到特定的服务器上
		这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。
3、生命周期与自动化构建
		运行任何一个阶段的时候,它前面的所有阶段都会被运行

四、插件和目标

每个插件都能实现多个功能,每个功能就是一个插件目标

五、导入项目
在这里插入图片描述
六、继承
在这里插入图片描述
父工程parent

<!-- 项目类型:pom用于声明父工程,jar用于声明java工程,war用于声明web工程 -->
  <packaging>pom</packaging>
  <!-- 依赖管理:父工程管理所有依赖,给子工程继承使用 -->
  <dependencyManagement>
  	<dependencies>
  		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>
  	</dependencies>
  </dependencyManagement>

子工程Hello

<!-- 继承父工程 -->
	<parent>
		<groupId>com.joker.maven</groupId>
	    <artifactId>parent</artifactId>
	    <version>0.0.1-SNAPSHOT</version>
	    <relativePath>../parent/pom.xml</relativePath>
	</parent>
	<dependencies>
		<!-- 子工程继承父工程后需要声明一下依赖,不需要版本,只需声明一下用什么依赖 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
	</dependencies>

七、聚合
模块很多,关系复杂,所以用到聚合
在父工程parent中的pom.xml设置:

<!-- 聚合:一键操作 -->
  <modules>
  	<module>../Hello</module>
  	<module>../A</module>
  	<module>../B</module>
  	<module>../C</module>
  	<module>../D</module>
  </modules>

之后只需对parent工程进行Maven Install,会自动进行编译运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值