Maven学习

Maven是什么?

Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。Maven项目的结构和内容在一个XML文件中声明,pom.xml 项目对象模型(POM),这是整个Maven系统的基本单元。

所有 POM 文件都需要 project 元素和三个必需字段:groupId,artifactId,version。

groupId:公司或者组织的唯一标志,并且配置时生成的路径也是由此生成

artifactId:项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的

父(Super)POM是 Maven 默认的 POM。所有的 POM 都继承自一个父 POM。父 POM 包含了一些可以被继承的默认设置。因此,当 Maven 发现需要下载 POM 中的 依赖时,它会到 Super POM 中配置的默认仓库 http://repo1.maven.org/maven2 去下载。

Maven 构建生命周期

Maven学习_第1张图片

Maven 有以下三个标准的生命周期:

  • clean:项目清理的处理
  • default(或 build):项目部署的处理
  • site:项目站点文档创建的处理

Clean 生命周期

执行mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:

  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除所有上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作

Default (Build) 生命周期

这是 Maven 的主要生命周期,被用于构建应用

在开发环境中,使用下面的命令去构建、安装工程到本地仓库

mvn install

在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中

mvn clean deploy  //这行命令也可以用于多模块的情况下,即包含多个子项目的项目,Maven 会在每一个子项目执行 clean 命令,然后再执行 deploy 命令。

Site 生命周期

Maven Site 插件一般用来创建新的报告文档、部署站点等。

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上

site阶段和site-deploy阶段,用以生成和发布Maven站点

Maven 构建配置文件

构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件,你可以为不同的环境,比如说生产环境(Producation)和开发(Development)环境,定制构建方式。

配置文件在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通过各种方式触发。

三种配置方式:

通过环境变量激活配置文件

 

mvn clean package:编译->测试->打包成jar包   ***不会把依赖的包打包到最终的jar包中

java -cp *.jar com.hwd.helloworld运行jar包

java -cp  指明了执行这个class文件所需要的所有类的包路径-即系统类加载器的路径(涉及到类加载机制)

 

使用maven构建项目就是在执行生命周期

执行生命周期就是在按顺序执行一系列的phase

每执行一个phase,都会执行该phase绑定的若干goal(最小任务单元)

示例:

mvn compile

compiler插件执行与compile关联的compiler:compile这个goal

 

常见插件  对应phase

compiler  compile

clean       clean

surefire    test

jar             package

 

Maven 仓库

在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。

Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方

Maven 仓库有三种类型:

  • 本地(local): 在第一次执行 maven 命令的时候才创建本地仓库。运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录
  • 中央(central):Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。http://search.maven.org/#browse
  • 远程(remote):开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件

Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。

https://www.runoob.com/maven/maven-repositories.html

Mirror

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。

Maven 引入外部依赖

1.在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下

2.然后添加以下依赖到 pom.xml 文件中

Maven 项目文档

1.修改 pom.xml

2.C:\MVN\consumerBanking> mvn site

Maven 快照(SNAPSHOT)

自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建。两种方式实现自动化构建

  • 在 bus-core-api 项目的 pom 文件中添加一个 post-build 目标操作来启动 app-web-ui 和 app-desktop-ui 项目的构建。
  • 使用持续集成(CI) 服务器,比如 Hudson,来自行管理构建自动化。

Maven 依赖管理

公共的依赖可以使用 pom 父的概念被统一放在一起。App-Data-lib 和 App-Core-lib 项目的依赖在 Root 项目里列举了出来(参考 Root 的包类型,它是一个 POM).

 

构建工具—maven,版本控制工具—svn

你可能感兴趣的:(项目开发)