Linux系统管理

介绍

清理,编译,测试,运行,打包,集成测试,验证,部署整个周期

目录结构

  • groupId:(公司反写网址.项目名)【主项目的标识,实际的项目】
  • artiFactId:(项目名-模块名)【maven 的项目和我们的实际的项目不一样,maven 是模块化的,一个实际的项目被划分为多个模块。一个模块的标识】
  • version:【当前版本号,一般三个数字组成。第一个 0 表示大版本号,第二个 0 表示分支版本号,第三个 0 表示小版本号】
    snapshot 快照
    alpha 内部测试
    beta 公测
    Release 稳定
    GA 正式发布
  • packaging:【maven 项目的打包方式,默认是 jar,还可以其他的 war,zip,pom 等等】

maven 常用的构建命令

mvn -v
mvn compile:编译
mvn test:测试
mvn package:打包

mvn clean :删除 target
mvn install:安装 jar 包到本地仓库,一般是将自己 compile 的 jar 包加入到本地仓库中,也就是如果一个项目用到另一个项目中的文件,我们可以这样使用

自动创建目录骨架

mvn archetype:generate -DgroupId=top.wuxiya.maven04 -DartifactId=maven04-demo -Dversion=1.0.0SNAPSHOT -Dpackage=top.wuxiya.maven04-demo

坐标和仓库

坐标是地址,用于找到对应的 jar 包,也就是 dependence

包括:groupId,artiFactId,version

仓库:本地和远程

maven 声明周期

每个证明周期是相互独立的,每个周期的内部有一定的依赖和顺序,运行之后的命令,自动执行之前的依赖

clean 清理项目 分为三个阶段:

pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件

default 构建项目

compile test package install

site 生成项目站点,根据 pom

pre-site 之前的工作
site 生成项目的站点文档
post-site 生成之后的工作
site-deploy 发布生成的站点到服务器上

对于 maven 而言,所有的命令都是调用插件来使用的

pom.xml 常用元素介绍

  • :根元素,包含了一些约束信息

  • :指定了 pom 的版本,固定的 4.0.0

  • 坐标信息:

  • 项目坐标信息:

  • :项目的描述名,一般在产生项目文档的时候使用

  • :项目的地址

  • :项目的描述

  • :开发人员的列表

  • :开源框架的许可证信息

  • :组织信息

  • :依赖列表 >
    依赖包的坐标信息:

    :依赖的范围,如 test,表示只在测试的范围有用;:true/false,用来设置依赖是否可选,默认是 false;
    :排除依赖传递列表 > :A->B->C,那么 C 对于 A 来说就是传递依赖

  • :依赖的管理 > > (并不会运行,而是用于子模块的继承)

  • > 插件信息 > > 坐标信息

  • :用于在子模块中对于父模块的继承

  • :用于聚合多个 maven 项目,如果我们有很多个 maven 模块,那么可以一次性编译,而不是一个一个编译

依赖的范围

重点来看 >
如果要使用某一个框架,需要将框架加入到 classPath 中,这样就可以使用该框架。

maven 中有三种 classpath,分别是 编译,测试,运行
junit 只存在于 test 的范围。

由此可见范围是用于管理依赖包的使用范围。

  • compile:默认,三种都有效
  • provided:测试和编译,如发布的时候容器里面已经有 API 了
  • runtime:测试和运行,JDBC 的应用
  • test:junit 的应用
  • system:
  • import:只在 management 中使用

依赖的传递

A->B->C

如果 A 引入 B 的 jar 包,那么会默认导入 C 包,这个时候如果不需要 C 包,我们在 > B 中,加入:排除依赖传递列表 > :C 的坐标

依赖冲突

如果 A 依赖了同一个构件的不同版本,那么会产生冲突

  • 短路优先:优先解析路径段的版本
    A->B->C->X(jar)
    A->D->X(jar)
    那么优先解析短的路径
  • 路径相同,优先解析先声明的版本

聚合和继承

聚合

对于不同的 maven 项目,我们需要相互调用的时候必须一个一个 install 到本地的仓库中才可以调用。

我们可以将不同的 maven 项目聚合一次性运行。

新建一个 maven 项目,packaging 用 pom,用:用于聚合多个 maven 项目,如果我们有很多个 maven 模块,那么可以一次性编译,而不是一个一个编译。

继承
新建一个 maven 项目,packaging 用 pom,删除 main 和 test,依赖放在 manegement 中。

在子项目中,中引入父亲