Maven核心

  1. 约定的目录结构
  2. POM
  3. 坐标
  4. 依赖
  5. 仓库
  6. 生命周期/ 插件/目标
  7. 继承
  8. 聚合

创建Maven工程

     1. 创建约定的目录结构
            [1]根目录 : 工程名
            [2]src目录:源码
            [3]pom.xml文件 :Maven工程核心配置文件
            [4]main目录:存放主程序
            [5]test目录:存放测试程序
            [6]java目录:存放Java源文件
            [7]resources目录:存放框架或其他工具配置文件
            为什么要遵守约定目录结构?
      • maven负责项目自动化构建,必须知道源文件在什么地方
      • 如果自己定义的东西要让框架或工具知道  
        • 1.以配置方式告诉框架
        • 2.遵守框架内部存在的约定
      •      约定>配置>编码

常用maven命令

  •     执行与构建过程相关的Maven命令必须进入pom.xml所在目录。
    • 与构建过程相关:编译、测试、打包。。。
  1.  mvn clean 清理
  2. mvn compile 编译
  3. mvn test-compile:编译测试程序
  4. mvn test:执行测试
  5. mvn package:打包
  6. mvn install:安装

POM

  • 含义:Project Object Model 项目对象模型
  • pom.xml 对于Maven项目是最核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置
 

坐标

  • Maven的坐标
    • groupid :  公司或组织域名倒序+项目名
        <groupid>com.wzy.maven</groupid>
    • artifactid: 模块名
        <artifactid>hello</artifactid>
    • version: 版本
        <version>1.0.0</version>
    •  

仓库

  • 本地仓库 :为当前本机电脑上所有Maven工程服务
  • 远程仓库
    • 私服:架设在当前局域网环境下,为当前局域网范围内所有Maven工程服务
    • 中央仓库:假设在Interent上,为全世界所有Maven工程服务
    • 中央仓库镜像:架设在各个大洲,为中央仓库分担流量。诚轻中央仓库的压力,同时更快的访问
  • 仓库中保存的内容
    • Maven自身需要的插件
    • 第三方工具或工程的jar包
    • 自己开发的maven工程
 

依赖

① Maven解析依赖信息时会到本地仓库中查找被依赖的jar包。对于我们自己开发的 Maven工程,使用 myn installa命令安装后就可以进入仓库
②依赖的范围
1.compile:
  • 主程序是否有效:有效
  • 对测试程序是否有效: 有效
  • 是否参与打包:不参与
2.test:
  • 主程序是否有效:无效
  • 对测试程序是否有效: 有效
  • 是否参与打包:不参与
3.provided:
  • 主程序是否有效:有效
  • 对测试程序是否有效: 有效
  • 是否参与打包:不参与
                
    

生命周期

  1. 各个构建环节执行的顺序:不能打乱顺序,必须按照既定的正确顺序来执行。
 

插件

在 Eclipse中使用 Maven
① Maven插件: Eclipse内置
② Maven插件的设置
installations:指定 Maven核心程序的位置。不建议使用插件自带的 Maven程序,而应该使用我们自己解压的那个
user settings:指定 conf/settings。 xm的位置,进而获取本地仓库的位置
 

依赖

    例:

<dependencies>
   <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
    <scope>provided</scope>
   </dependency>
   <dependency>
    <groupId>per.wzy.maven</groupId>
    <artifactId>javaProject01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
   </dependency>
  </dependencies>
 
  1. 依赖的传递性
    
    • 好处:可以传递的依赖不必在每个模块工程中都重复声明,在“最下面"的工程中依赖一次即可
    • 注意:非 compile范围的依赖不能传递。所以在各个工程模块中,如果有需要就得重复声眀依赖
  2.排除传递依赖
    • 需要设置依赖排成的场合
    • 依赖排除方式
<exclusions>
  	<exclusion>
  		<groupId>org.jfree</groupId>
  		<artifactId>jcommon</artifactId>
  	</exclusion>
 </exclusions>
 
 
 
6
 
 
 
1
<exclusions>
2
  <exclusion>
3
  <groupId>org.jfree</groupId>
4
  <artifactId>jcommon</artifactId>
5
  </exclusion>
6
 </exclusions>
 
 
4.统一管理依赖的版本号
建议配置方式
    i使用 properties标签内使用自定义标签统一声明版本号
    ii在需要统一版本的位置,使用${自定义标签名}引用 
${atguigu.spring.version} //依赖version中
 
 
 
1
 
 
 
1
${atguigu.spring.version} //依赖version中
 
 
 

继承

①现状
Hello依赖的unt:4.0
Hello Friend依赖的 Junit:4.0
MakeFriends依赖的 Junit:4.9
由于test范围的依赖不能传递,所以必然会分散在各个横块工程中,很容易造成版本不一致
②需求∶统一管理个模块工程中对jun依赖的版本 
解决思路:将junit依赖统一提取到“父”工程中,在子工程中声明junit依赖时不指定版本,以父工程中统
一设定的为准。同时也便于修改
④操作步骤
[1]仓库建一个 Maven工程作为父工程。注意:打包的方式pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>per.wzy.maven</groupId>
  <artifactId>ParentPom</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>
  <dependencies>
  	<dependency>
	    <groupId>jfree</groupId>
	    <artifactId>jfreechart</artifactId>
	    <version>1.0.13</version>
	</dependency>
  </dependencies>
</project>
 
 
 
14
 
 
 
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <groupId>per.wzy.maven</groupId>
4
  <artifactId>ParentPom</artifactId>
5
  <version>0.0.1-SNAPSHOT</version>
6
  <packaging>pom</packaging>
7
  <dependencies>
8
  <dependency>
9
    <groupId>jfree</groupId>
10
    <artifactId>jfreechart</artifactId>
11
    <version>1.0.13</version>
12
</dependency>
13
  </dependencies>
14
</project>
 
 
[2]在子工程中声明对父工程的引用
  <parent>
	  <groupId>per.wzy.maven</groupId>
	  <artifactId>ParentPom</artifactId>
	  <version>0.0.1-SNAPSHOT</version>
	  <!-- 以当前文件为基准的父工程中的pom.xml -->
	  <relativePath>../ParentPom/pom.xml</relativePath>
  </parent>
 
 
 
7
 
 
 
1
  <parent>
2
  <groupId>per.wzy.maven</groupId>
3
  <artifactId>ParentPom</artifactId>
4
  <version>0.0.1-SNAPSHOT</version>
5
  <!-- 以当前文件为基准的父工程中的pom.xml -->
6
  <relativePath>../ParentPom/pom.xml</relativePath>
7
  </parent>
 
 
[3]将子工程的坐标中与父工程坐标中重复的内容删除
[4]在父工程中统一junit的依赖
[5]在子工程中除junit依赖的版本号部分
 

聚合

作用:一键安装各个模块工程
配置方式:在一个总的聚合工程中,配置各个参与聚合的模块
  <modules>
  	<module>../javaProject01</module>
  	<module>../Webproject</module>
  </modules>
 
 
 
4
 
 
 
1
  <modules>
2
  <module>../javaProject01</module>
3
  <module>../Webproject</module>
4
  </modules>
 
 
使用方式:在聚合工程的pom.xml上运行 maven instal

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">





posted @ 2019-07-22 10:27  local-  阅读(349)  评论(0编辑  收藏  举报