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 有以下三个标准的生命周期:
执行mvn post-clean 命令时,Maven 调用 clean 生命周期,它包含以下阶段:
这是 Maven 的主要生命周期,被用于构建应用
在开发环境中,使用下面的命令去构建、安装工程到本地仓库
mvn install
在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中
mvn clean deploy //这行命令也可以用于多模块的情况下,即包含多个子项目的项目,Maven 会在每一个子项目执行 clean 命令,然后再执行 deploy 命令。
Maven Site 插件一般用来创建新的报告文档、部署站点等。
site阶段和site-deploy阶段,用以生成和发布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 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方
Maven 仓库有三种类型:
Maven 仓库默认在国外, 国内使用难免很慢,我们可以更换为阿里云的仓库。
https://www.runoob.com/maven/maven-repositories.html
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
配置两个Repository之间的镜像关系,一般是出于访问速度和下载速度考虑。
1.在 src 文件夹下添加 lib 文件夹,然后将你工程需要的 jar 文件复制到 lib 文件夹下
2.然后添加以下依赖到 pom.xml 文件中
1.修改 pom.xml
2.C:\MVN\consumerBanking> mvn site
自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建。两种方式实现自动化构建
公共的依赖可以使用 pom 父的概念被统一放在一起。App-Data-lib 和 App-Core-lib 项目的依赖在 Root 项目里列举了出来(参考 Root 的包类型,它是一个 POM).