项目管理利器-maven

 Maven Ant Gradle---帮助开发者无需从各个地方下载Jar包,避开Jar包冲突,下载冗余的问题
 
maven基于项目管理的对象模型(POM),可用一小段描述信息来管理项目的构建、报告和文档的项目管理工具。

下载:maven.apache.org

目录结构:
    boot目录包含一个类加载器框架
    bin目录包含mvn的运行脚本
    confing目录包含配置文件
    lib目录包含mvn使用的类库

配置环境变量:
   M2_HOME maven主目录
   path 添加 ;%M2_HOME%\bin

检测安装:
     cmd:  mvn -v
--------------maven常用构建命令
1. mvn -v 版本。
2. mvn compile 编译。
3. mvn test 测试。
4. mvn package 打包。
5. mvn clean 清除maven生成的target目录。
6. mvn install 将生成的jar安装到本地仓库中。

maven编译代码的流程:
1. 执行mvn compile 命令编译java代码文件;
2. 如果发现代码中引用到了其他的包文件(jar包);
3. 首先回去核心配置文件pom.xml文件中去查找相应的配置依赖;如图dependency中
4. 根据配置依赖先去本地的仓库中查找jar包资源;(可以再相应的目录下用install创建)
5. 如果本地不存在,则会再去联网到maven的中央仓库中查找

------
Maven的三个生命周期:
clean 清理项目:又分为三个阶段(pre-clean执行清理前的工作、clean清理上一次构建生成的所有文件、post-clean执行清理后的文件)
default 构建项目(最核心):compile、test、package、install都属于default
site 生成项目站点(根据POM的信息自动生成站点):pre-site 在生成项目站点前要完成的工作、site 生成项目的站点文档、
post-site 在生成项目站点后要完成的工作、site-deploy 发布生成的站点到服务器上
------------------------------------------------------------------------------------------------------------------------------------------------------
项目管理利器(Maven)——Pom.xml解析

<name>项目的描述名</name> 
<url>项目的地址</url> 
<description>项目描述</description> 
<developers>开发人员信息</developers> 
<licenses>许可证信息</licenses> 

<!-- 依赖列表 -->
<dependencies>
<!-- 依赖项 -->
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<type></type>
<scope>依赖的范围</scope>
<optional>设置依赖是否可选,默认是false</optional>
<!-- 排除依赖传递列表 -->
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
</dependencies>

<!-- 依赖的管理,一般定义在父模块中,由子模块去继承 -->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>

<!-- 对构建行为提供相应的支持 -->
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<!-- 指定坐标 -->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>

<!-- 一般在子模块中指定所继承的父模块 -->
<parent></parent>

<!-- 模块列表 -->
<modules>
<module></module>
</modules>
-----------------------------------------------------------------------------------------------------------------------------------------
项目管理利器(Maven)——依赖范围(classPath:编译,运行,测试)
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效(servlet API)
3.runtime:在测试和运行时有效(jdbc驱动)
4.test:只在测试时有效
5.system:在编译和测试时有效,与本机系统关联,可移植性差
6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
----------------------------------------------------------------------------------------------
项目管理利器(Maven)——排除依赖
假设B项目依赖A项目,C项目又依赖B项目,那么在C项目中运行compile时,在引进B项目的同时,自动就把A项目也引进来了。如果不想将A项目导入的话,可以使用exclusions下设置exclusion,然后将A项目的坐标添加即可将A项目排除在Maven Dependeccies之外。
-------------------------------------------------------------------------------------------------------------------------------------------------------
项目管理利器(Maven)——依赖冲突

如果A和B依赖了一个不同版本的相同的构件C。
①:短路优先:
会优先解析路径短的版本。
A -> B -> C -> X(jar)
A -> D -> X(jar) 优先解析短的
②:先声明先优先:
如果路径长度相同,则谁先声明,先解析谁。
-----------------------------------------------------------------------------------------------------------------------------------------------------
项目管理利器(Maven)——聚合
1.聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要MAVEN能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用<modules></modules>这个标签。


项目管理利器(Maven)----继承
继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父类的POM.XML然后在继承此POM.XML
注意:
1.packaging改为pom<br>
2 dependencyManagement中并不提取依赖<br>
3.property中定义了unit版本号,之后可以引用<br>
4 父类parent中的main和test没有意义,可以删除<br>

--------------------------------------------------------------------------------------------------------------------------------------------------------
maven文件样式
<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>com.haha.maven01</groupId>
   <artifactId>maven01-model</artifactId>
   <version>0.0.1SNAPSHOT</version>
   <dependencies>
   
   <dependency>
   
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.10</version>
   
   </dependency>
   </dependencies>


</project>
-------------------------------------------
更详细教程  http://wiki.jikexueyuan.com/project/maven
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值