maven是一个java编写的工具(需要安装配置),用来服务项目开发中常用的编译打包等功能。为了实现其功能,maven定义了项目的目录格式(最重要的配置文件pom.xml),定义了一些概念,坐标,依赖,仓库,生命周期(可以使用mvn命令指定执行哪些周期),插件等。下面在介绍maven如何打包的过程中介绍这些概念。
先介绍生命周期, maven把项目分为多个阶段,validate, compile, test, package, verify, install,可以使用mvn命令指定执行项目的某些阶段。比如在项目下目录下执行mvn clean package就代表执行clean清理上次编译的target目录(目录结构是maven约定好的),然后就执行从开始到package的所有生命周期,也就是validate, compile, test, package。这些功能都是maven提前写好的(插件),在pom.xml可以进行配置修改。
maven如何知道你的代码和配置资源文件在哪?(约定)
maven默认约定好了他们的位置,不配置就代表是默认位置。
maven如何知道你想依赖哪些jar?(pom.xml)
maven工程依赖jar需要你在pom.xml里配置好,需要编译的时候会自动替你下载。
如何唯一确定一个jar?(坐标)
靠名字肯定不行了, maven使用了坐标的概念来确定唯一的一个资源,坐标由这5个元素组成groupId(实际项目)、artifactId(maven项目/模块)、 version( 版本号)、packaging(打包方式)classifier。在pom.xml的dependency配置了这些就可以确定唯一的一个资源了。
到哪里找jar资源呢?(仓库)
mvn获取坐标之后就可以去仓库查找资源去下载,仓库查找的顺序是本地仓库(就在你本地电脑上),远程仓库,中央仓库。 仓库会存储这些资源并提供查询和下载。
仓库是maven工具的配置需要在maven工具的settings.xml文件里配置仓库的地址。
如果是自己写的jar呢?(先发布到仓库)
自己开发的jar要指定坐标之后发布到仓库,然后就可以根据坐标从仓库找到了。
如何打包成想要的包?
maven下载完jar之后根据依赖编译出class,然后根据packaging配置如何打包成jar或war, 这个是有默认格式的,不配置就放到默认目录,如果有特殊的目录处理可以在pom.xml配置。
最终打包文件输出到在项目的target目录下
推荐: