zoukankan      html  css  js  c++  java
  • Maven学习总结(21)——Maven常用的几个核心概念

    在使用Maven的过程中,经常会遇到几个核心的概念,准确的理解这些概念将会有莫大的帮助。

    1. POM(Project Object Model)项目对象模型

    POM 与 Java 代码实现了解耦,当需要升级版本时,只需要修改POM,而不需要更改Java代码,而在POM稳定后,日常的Java代码开发基本不涉及POM的修改。

    2. 坐标

    groupId , artifactId , version 三个元素是项目的坐标,唯一的标识这个项目。

    groupId 项目所在组,一般是组织或公司,artifactId 是当前项目在组中的唯一ID; version 表示版本,SNAPSHOT表示快照,表示此项目还在开发中,不稳定。

    groupId 和实际项目不一定是一一对应的,maven 有模块的概念,例如 spring-core, spring-context...;groupId 也不应该只对应公司或组织名,建议具体到项目名,因为公司或者组织下有多个项目,而artifactId只能代表模块名。

    3. 依赖

    传递性依赖可能带来一些问题,例如两个依赖的版本不兼容,依赖SNAPSHOT可能会导致项目的不稳定问题,依赖的jar包由于版权问题无法使用等等问题,此时,就需要在dependency中用exclusion 排除依赖,然后引入合适的依赖,exclusion中只需提供groupId 和 artifactId 即可。

    处理依赖时 好用的命令:(IDE当然更加方便)
    mvn dependency:list 查看当前项目的已解析依赖
    mvn dependency:tree 查看当前项目的依赖树
    mvn dependency:analyze 依赖分析,会给出使用和未使用的jar包

    4. 聚合与继承

    聚合:

    <moduls>

      <modul> m1</modul>

      <modul> m2</modul>

      <modul> m3</modul>

    </moduls>

    继承:

    parent pom 用 <DependencyManagement> 声明依赖,子pom继承后的<dependency>就可以只写groupId 和 artifactId ,其他细节 parent pom中已经声明过了。

    5. 快照

    A 和 B 合作开发,B 开发的模块依赖A开发的模块,A 发布时version设为快照,例如 2.1-SNAPSHOT,再发布过程中,maven会自动给此版本打上时间戳,B 依赖于此快照版本,当B构建项目时,Maven会自动根据时间戳检查最新版本,并更新。快照版本应该仅在组织内部的项目或者模块间使用;正式发布时,要记得改为正式版本

    6. 生命周期

    三套独立的生命周期(clean, default, site),每个周期都包含一些阶段。

      clean的三个阶段:
    1.pre-clean:执行一些清理前需要完成的工作
    2.clean 清理上一次构建生成的文件
    3. post-clean 执行一些清理后需要完成的工作
      default的一些关键阶段:
    1. process-sources: 处理项目主资源文件,一般是将src/main/resources 目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
    2. compile 编译项目的主源码
    3. process-test-sources: 处理项目测试资源文件
    4. test-compile 编译项目的测试代码
    5. test 进行测试
    6. package 接受编译好的代码,打包成可发布的格式,例如jar
    7. install 将包安装到Maven本地仓库,供本地其他Maven项目使用
    8. deploy 将最终的包复制到远程仓库
      site 生命周期
    1. pre-site 2. site 3. post-site 4.site-deploy

    相对应得几个常用命令 mvn clean; mvn test; mvn clean compile; mvn clean install

  • 相关阅读:
    Latex (1)
    linux/unix command
    函数类型和函数指针类型(摘自 linux c编程一站式学习)
    emacs 剪切板
    Centos 常见问题汇总
    makefile(摘自linux_c编程一站式学习)
    [转]DIV布局之三行三列之高度自适应
    ASP.Net新手项目经验谈
    获取中文首字母的方法
    还是不会伪装
  • 原文地址:https://www.cnblogs.com/zhanghaiyang/p/7213000.html
Copyright © 2011-2022 走看看