美文网首页
关于 maven

关于 maven

作者: _Sisyphus | 来源:发表于2018-03-10 17:34 被阅读0次

慕课网《项目管理利器——maven》笔记

项目管理利器 maven

maven 是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

  • setting.xml 主要用于配置 maven 的yu运行环境等一系列通用的属性,是全局级别的配置文件
  • pom.xml 主要描述了项目的 maven 坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件
常见命令 mvn-
  1. v 查看 maven 版本
  2. compile 编译
  3. test 测试
  4. package 打包
  5. clean 删除target【maven生成的文件】
  6. install 将jar包安装到本地仓库中
  • 自动构建项目-创建目录的两种方式
    archetype:generate :按照提示进行选择
    archetype:generate -DgroupId=组织名
    -DartifactId=项目名-模块名【当前maven项目在组织中的唯一标识】
    -Dversion=版本号
    -Dpackage=包名
maven 中的坐标和仓库
  • 坐标
    通过 groupId 、artifactId、version 定位

  • 仓库
    本地仓库和远程仓库:本地仓库中找不到需要的构件则去 maven 的全球中央仓库中查找,查找到后会下载到本地仓库供使用,若远程中央仓库也找不到就会报错

  • 镜像仓库
    提供和 maven 中央仓库一样的功能,setting.xml 中配置mirror

  • 更改仓库位置
    maven 从远程仓库下载的构件默认存放在当前用户目录的 .m2/repository 目录当中的,若要修改,则修改settings.xml中的<localRepository>本地仓库路径</localRepository> 标签内的本地仓库路径为新创建的文件路径。

完整的项目构建过程

清理、编译、测试、打包、集成测试、验证、部署

maven 生命周期

clean 清理项目

1. pre-clean        执行清理前的工作  
2. clean            清理上一次构建生成的文件  
3. post-clean       执行清理后的文件

default 构建项目【最核心】

compile、test、package、install(安装到本地仓库)

site 生成项目站点【根据POM中的信息自动生成一个站点】

pre-site        生成项目站点前要完成的工作  
site            生成项目的站点文档  
post-site       生成项目站点后要完成的工作  
site-deploy     发布生成的站点到服务器上
pom.xml 常用元素

pom.xml 是maven项目的核心管理文件,用于项目描述、组织管理、 依赖管理、构建信息的管理。

//模型版本,指定了当前pom的版本
<modelVersion>4.0.0</modelVersion>

<!--坐标信息-->

//定义当前 maven 属于哪一个实际的项目,maven 项目体现的是模块化的概念,一个实际的项目会被划分为很多的模块【域名反写+项目名】
<groupId>com.baidu</groupId>

//模块标识【项目名+模块名】
<artifactId>loan_manage</artifactId>

//当前项目版本号 大版本号.分支版本号.小版本号
    -SNAPSHOT(快照版本)
    -alpha(内测版)
    -beta(公测版)
    -Releage(稳定版)
    -GA(正式发布
<version>0.0.1-SNAPSHOT</version>

//打包的机制 默认是jar
<packaging>jar</packaging>
          
//项目的描述名称, Maven产生的文档时候使用 
<name>loan_manage</name>

//项目主页的URL, Maven产生的文档用
<!--<url>http://xxxxxx</url>-->

//项目的详细描述, Maven 产生的文档用。
<description>Spring Boot project</description>

//开发人员信息    
<developers></developers>>

//许可证信息
<licenses></licenses>

//组织信息
<organization></organization>

//依赖列表
 <dependencies>
        //依赖项
     <dependency>
            //坐标信息
        <groupId>org.submail.ecf</groupId>
        <artifactId>org.apache.httpcomponents.httpclient</artifactId>
        <version>4.3.5</version>

         //设置指依赖是否可选,默认为false,即子项目默认都继承:为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似 
        <optional>false</optional>  

         //maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。
         //scope包含如下的取值:compile(编译范围,默认 编译、测试、运行都有效)、provided(已提供范围 测试和编译有效)、runtime(运行时范围 测试和运行时有效 )、test(仅在测试范围)、system(系统范围 测试和编译有效 与本地系统相关联,可移植性差)
        <scope>test</scope>  
        
       //屏蔽依赖关系。【该标签下可屏蔽多个依赖】 比如项目中使用的libA依赖某个库的1.0版,libB依赖某个库的2.0版,现在想统一使用2.0版,就应该屏蔽掉对1.0版的依赖 ;再比如A依赖B,B依赖C,C对于A来说就是传递依赖,如果A不想依赖C就可以使用这个标签
        <exclusions>  
            <exclusion>  
                <groupId>C_groupId</groupId>  
                <artifactId>C_artifactId</artifactId>  
            </exclusion>  
        </exclusions>  
    </dependency>
    
 </dependencies>


   //继承-自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖
    (必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过
        group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息。 --> 
    <dependencyManagement> 
        <dependencies> 
            <!-- 参见dependencies/dependency元素 --> 
            <dependency> 
            </dependency> 
        </dependencies> 
    </dependencyManagement> 
    
    
    <build>
        //插件列表
     <plugins>
            <plugin>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
     </plugins>
    </build>
    
    
//父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。
     坐标包括group ID,artifact ID和 version。 
<parent>
    //被继承的父项目的全球唯一标识符
    <groupId>org.springframework.boot</groupId>   
    //被继承的父项目的构件标识符 
    <artifactId>spring-boot-starter-parent</artifactId>
    //被继承的父项目的版本 
    <version>1.5.6.RELEASE</version>
    //父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。
         Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),
         然后在本地仓库,最后在远程仓库寻找父项目的pom。 
    <relativePath/> <!-- lookup parent from repository -->
</parent>
依赖传递
比如A依赖B,B依赖C,C对于A来说就是传递依赖,A会同时依赖B&C
依赖冲突
A和B依赖了一个构件的不同版本
1. 短路优先:优先解析路径短的版本
    A->B->C->X(jar)
    A->D->X(jar)            【优先】

2. 先声明优先:如果路径长度相同,则谁先声明,先解析谁  
    声明指 dependency 标签先后顺序
聚合和继承
  • 聚合:将多个项目 install,将其安装到本地仓库中,必须对其依次进行 install 命令,maven 中有一种方式,可以将其放到一起运行,叫聚合。
    新建项目->修改pom.xml中的packageing标签jar为pom->新增

      //模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径   
      <modules>
          <modules>A子项目相对路径</modules>
          <modules>B子项目相对路径</modules>
          <modules>C子项目相对路径</modules>
      </modules>
    

    ->clean install 会进行三次构建 依次生成A、B、C三个jar并将其安装到本地仓库中

  • 继承
    将不同子项目中相同的配置提取到一个公共的父项目中
    父:dependencyManagement 标签
    子:parent 标签


关于pom.xml文件中标签的详细说明可参考:
http://blog.csdn.net/u012152619/article/details/51485297
https://www.cnblogs.com/hafiz/p/5360195.html

相关文章

  • SpringMVC+Maven环境搭建

    SpringMVC+Maven环境搭建# 关于Maven的下载配置就不做介绍。默认Spring插件,maven插件...

  • Maven 使用教程

    Maven 网址 Maven 官方网站,官方网站有关于 Maven 的一切。Maven 百度百科 Maven 是什...

  • 关于 maven

    慕课网《项目管理利器——maven》笔记 项目管理利器 maven maven 是基于项目对象模型(POM),可以...

  • 关于maven

    参考 http://www.trinea.cn/android/maven/需要被使用(依赖)的artifact都...

  • SpringBoot之条件注解

    背景 之前写过关于Spring和Maven的profile的区别 maven profile VS spring ...

  • Maven | HeadFirst

    headfirst maven安装 maven配置本地仓库 关于pom.xml 远程仓库:地址 modelVers...

  • Maven学习笔记

    Spring MVC起步中关于Maven的简要介绍 1.Maven介绍 (1)POM Project Object...

  • Hadoop学习笔记(一)——(使用java API操作HDFS

    1、文件树中缺少文件 (1)关于创建Maven project后文件树下没有Maven Dependencies文...

  • 2019-03-03

    技术:有关maven学习 互联网运营:关于运营和做简历 一、有关Maven的学习: 1、有关maven包的下载:h...

  • 搭建Maven 私服 (Android周边记录1)

    搭建Maven 私服 本文整理目前网络上关于NEXUS搭建Maven私服的文章,记录关于如何搭建一个属于自己的Ma...

网友评论

      本文标题:关于 maven

      本文链接:https://www.haomeiwen.com/subject/rpdbfftx.html