Maven回顾
在工作的一年以来,其实一直只是把Maven当作一个工具来进行使用,并没有太多的去看过,大言不惭的说 甚至连官网都很少点进去看。依赖着各个插件进行打包部署,最近跳槽到了新的公司,在打包的时候发现了很多不一样的地方。于是回过头来看下Maven。弥补下不足之处。
maven的官网:https://maven.apache.org/ Maven是一个软件项目管理和综合工具,基于项目对象模型的概念。这句话就是字面的意思,项目本来也就是一个对象,对象则依然会有父类子类依赖等关系。Maven运行时候需要JDK环境,则表示Maven是一个Java项目。Maven一便项目中我们用的最多的还是setting.xml,但其实还有很多配置参数信息。
MAVEN_OPTS:用来启动Maven的JVM参数,可以设置对应的最大最小堆。
maven.config文件:可以定义对应的通用命令来对应各个项目,例如mvn install则是在此处。
jvm.config文件:则是Maven运行时的JVM参数
setting.xml会存在两个地方,一个是Maven安装目录下(全局配置),一个则是用户目录下的m2中(用户配置)。如果两个文件都存在,则它们的内容将被合并。setting.xml的官网文档:https://maven.apache.org/settings.html
主要的还是插件,Maven平时用的多还是插件。插件的文档:https://maven.apache.org/plugins/index.html
主要还是打包插件是怎么运行,这个可以拿一个install 插件分析下。
这个插件其实也是具体的Java代码组成的,里面其实就是读取对应的pom文件,然后进行maven的上层业务流程进行。
目前用的最多的插件:
maven-archetype-plugin,用于直接生成框架的脚手架,一般都是走generator目标进行。
maven-assembly-plugin,一般打包的时候都是直接jar包或者war包,有些可能是打包成一个dockerfile。用这个插件主要是为了可以输出一个标准的格式,在CICD的完整流程中,这个也有利部署。
制作项目分发包,该分发包可能包含了项目的可执行文件、源代码、readme、平台脚本等等。 maven-assembly-plugin支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的,例如用户可以 按文件级别的粒度、文件集级别的粒度、模块级别的粒度、以及依赖级别的粒度控制打包,此外,包含和排除配置也是支持的。maven-assembly- plugin要求用户使用一个名为assembly.xml的元数据文件来表述打包,它的single目标可以直接在命令行调用,也可以被绑定至生命周期。
maven-dependency-plugin,这个可以帮助分析对应的依赖问题,常用tree和analyze命令。dependency:copy,dependency:copy-dependencies 以及dependency:unpack,dependency:unpack-dependencies偶尔也会用到。
Maven相关文章:https://juejin.cn/post/6844904182487449614;https://juejin.cn/post/6919490393893502984