Maven第二次总结

maven的核心概念:

  1. 目录结构
  2. 常用maven命令
  3. 坐标:GAV
  4. 依赖
  5. 仓库
  6. 生命周期
  7. 继承
  8. 聚合
  9. 在Eclipse中使用Maven

1-目录结构

         1.根目录:工程名
	     2.src目录:源码
	     3.pom.xml文件:Maven工程的核心配置文件
	     4.main目录:存放主程序
	     5.test目录:存放测试程序
	     6.Java目录:存放Java源文件
	     7.resources目录:存放框架或其他工具的配置文件
	     8.target目录:编译结果

2-常用maven命令

             1、mvn clean:清理
			 2、mvn compile:编译主程序
			 3、mvn test-compile:编译测试程序
			 4、mvn test:测试
			 5、mvn package:打包
			 6、mvn install:把工程打包进入maven仓库中
			 7、mvn site:生成站点
			 8、mvn deploy:将最终的包复制到远程仓库

3-坐标

      1-maven坐标:使用三个向量在仓库中唯一定位一个maven工程
	     1.groupid:公司或组织域名倒序+(项目名)
		 2.artifactid:模块名
		 3.version:版本
	  2-maven工程坐标与仓库中路径的对应关系

4-依赖

      1-Maven解析依赖信息时会到本地仓库中查找被依赖的包
	      对于我们自己开发的maven工程,使用mvn install命令安装后就可以进入仓库
	  2-依赖的范围:
	      1.compile范围的依赖
		     对主程序是否有效:有效
			 对测试程序是否有效:有效
			 是否参与打包:参与
			 是否参与部署:参与--spring-core
			 
		  2.test范围的依赖
		     对主程序是否有效:无效
			 对测试程序是否有效:有效
			 是否参与打包:不参与
			 是否参与部署:不参与--junit
			 
		  3.provided范围的依赖
		     对主程序是否有效:有效
			 对测试程序是否有效:有效
			 是否参与打包:不参与
			 是否参与部署:不参与--servlet-api.jar
			 
	  3-依赖的传递性:
	       1.直接依赖:maven项目中pom.xml导入的依赖
		   2.传递过来的依赖:maven项目中导入其他maven项目时,所传递过来的依赖
		   3.好处:
		       可以传递的依赖可以不用在每个模块工程中都重复声明,,在最下面的工程中依赖一次即可
		   4.非compile范围的依赖不能传递,所以在各个工程模块中,如果有需要就得重复声明依赖
		   
	  4-依赖的排除:
	       1.<exclusions>
		       <exclusion>
                 <groupId>commons-logging</groupId>     
                 <artifactId>commons-logging</artifactId>
                </exclusion>
		     </exclusions>
		   2.如果在最下面的工程中排除,也会传递排除
	  5.依赖的原则:
	       1.作用:解决模块工程之间的jar包冲突
		   2.验证路径最短者优先原则。
		   3.验证路径相同,先声明者(<dependency>标签的声明顺序)优先
		       即依赖的工程在POM.xml中的先后顺序
		   4.多次直引不同版本的jar时,使用最后声明的版本
			   
	  6.同一管理依赖的版本
	       1.如果同一升级版本
		   2.<properties>
              <atguigu.spring.version>4.0.0.RELEASE</atguigu.spring.version>
             </properties>
			 
			 <version>${atguigu.spring.version}</version>
			 
		   3.凡是需要统一声明后再引用的场合都可以使用

5-仓库

  仓库的分类:
	     1-本地仓库:当前电脑上部署的仓库目录
		 2-远程仓库:
		      私服:搭建在局域网上
			  中央仓库:架设在Internet上
			  中央仓库镜像:为分担中央仓库流量,提高访问速度
		 3-仓库中保存的内容:
		     1.maven自身需要的插件
			 2.第三方框架或工具的jar包
			 3.我们自己开发的maven工程

6-生命周期

      1-各个构建环节的执行顺序:不能打乱,必须按照既定的正确顺序执行
	  2-maven的核心程序中定义了抽象的生命周期,生命周期中的各个阶段的具体任务是由插件来实现的
	  3-三个独立的生命周期:
	      Clean LifeCycle:清理工作
		  Default LifeCycle:构建的核心部分:编译,测试,打包,安装,部署
		  Site LifeCycle:生成项目报告,站点,发布站点
	  4-maven的核心程序为了更好的实现的自动化构建,按照这一特点执行生命周期中的各个阶段:
	     不论执行生命周期的那个阶段,都是从这个生命周期的初始位置开始执行。
	  5-插件和目标
	     1.Maven 的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的。
		 2.每个插件都能实现多个功能,每个功能就是一个插件目标。
		 3.Maven 的生命周期与插件目标相互绑定,以完成某个具体的构建任务。
		 例如:compile就是插件maven-compiler-plugin的一个目标;pre-clean是插件maven-clean-plugin的一个目标。

7-继承

      1.非compile范围的依赖无法被传递,易造成版本混乱
	  2.将非compile范围的依赖提取到父工程中,而再子工程中不声明依赖版本,,以父工程中的依赖为准
	  3.操作步骤:
	      1、创建一个父工程:打包方式为Pom
		  2、再子工程中声明对父工程的引用
		      <!-- 子工程中声明父工程 -->
             <parent>
	             <groupId>com.atguigu.maven</groupId>
	             <artifactId>Parent</artifactId>
	             <version>0.0.1-SNAPSHOT</version>
				 <!--以当前文件为基准的父工程pom.xml文件的相对路径  -->
                 <relativePath>../Parent/pom.xml</relativePath>
             </parent>
		  3、将子工程中和父工程中坐标重复的内容删除
		          <groupId>com.atguigu.maven</groupId>
				  <version>0.0.1-SNAPSHOT</version>
		  4、在父工程中同一依赖
		          <dependencyManagement>
                     <dependencies>
                         <dependency>
		                     <groupId>junit</groupId>
		                     <artifactId>junit</artifactId>
		                     <version>4.0</version>
		                     <scope>test</scope>
	                     </dependency>
	                 </dependencies>	
                   </dependencyManagement>
		  5、删除子工程的依赖版本号
		      <version>3.4.6</version>
			  
	  4.注意:配置继承后,执行安装命令时,要先安装父工程

8-聚合

     1-一键安装各个模块工程
	 2-在一个总的聚合模块中去配置各个参与的模块
	     <!--配置聚合  -->
         <modules>
            <!--指定各个子工程的相对路径  -->
            <module>../HelloFriends</module>
             <module>../MakeFriends</module>
         </modules>
	  3-在配置的工程pom.xml中运行
	  
	  4-那么工程拆分后又如何进行互相调用和访问呢?这就需要用到 Maven 的依赖管理机制。

9-在Eclipse中使用Maven

 1)Maven插件中的设置
     1-installations:指定Maven核心程序的位置:maven安装版本地址
	 2-User Settings:指定conf/settings.xml文件的位置,进而获取本地仓库的位置	
 2)基本操作
     1-maven项目导入:
	     import--Maven--Existing Maven Projects
		 是依据pom.xml文件识别
 3)创建maven问题
   1-pom.xml错误问题:缺少web.xml文件      
	  解决:
		  1.在pom.xml中设置
		     <properties>
             <failOnMissingWebXml>false</failOnMissingWebXml>
             </properties> 
		  2.新增web.xml:Java EE Tools-->Generate Deployment Descriptor Stub
		  3.项目右键--Properties--Maven--Project Facets--Dynamic Web Moudule
		      /src/main/webapp
	      
   2-在webapp文件处新增.jsp文件,会报错
	   解决:1.可通过构建路径--Add Library--Server Runtime--添加tomcat服务
			2.在pom.xml文件中添加
				     <dependency>
		                 <groupId>javax.servlet</groupId>
		                 <artifactId>servlet-api</artifactId>
		                 <version>2.5</version>
		                 <scope>provided</scope>
	                 </dependency>
		    3、遇到NullPointerException时,且在(index).jsp._jspInit异常,有可能是pom.xml的jsp-api
		       <scope>provided</scope>范围出错!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值