Maven理解
笔记原本记录在有道或者印象笔记上,为了方便,现将部分笔记摘抄至随笔,以供日后参考。
有些自己总结的部分内容可能不太正确,希望明白的可以为我指出,谢谢!
goal理解:
install:将项目打包并放入用户的maven本地仓库(在setting中设置)文件夹中,install中包含了package
clean:清除上次操作产生的文件 package:打包,放入target目录下
compile:编译,下载jar包,生成class等
在打包或编译前最好clean一下。
对于常用的properties可以在开始时定义在properties标签内,通过${name}取用
对于setting.xml的理解:
对于多用户的pc而言,maven安装目录下的setting.xml是真正的全局配置文件,而每个用户的.m2目录下的setting.xml只是针对当前用户。
两个同时存在时以每个用户单独的setting.xml为准。
setting.xml文件中的标签理解:
localRepository:用于指定本地库的地址
MirrorOf:该镜像可以匹配哪些仓库,不配置的时候默认为central中央库
MyEclipse中两个src文件夹的理解:
本地文件实际存放的是资源文件夹,下部的src创建的文件(包括main和test)实质上都是创建在上部的main资源文件夹内?。
一个是专门用于作为类的目录:资源文件夹
另一个是作为web资源的根目录:普通文件夹,摆设(希望有人为我解答一下)
设置项目facts,更改根路径为src下的webapp并且将webapp设置为资源文件夹,否则打包时无法将jsp等文件打包进去。
pox.xml中的重要标签:
<build>:包括了编译期间的设置。其中的sources及其子标签source是为了方便用户自己定义额外的资源文件目录。source的includes和excludes分别表示过滤条件(包含和不包含),filtering表示是否开启占位符替换
<profile>:根据不同的配置打包,可以在打包时显式指定,profile可以包括大部分pom中存在的元素并进行覆盖。通过<activation>可以设置基本的触发条件(jdk,os等)
通过设置properties替换文件中的值,需要在build中开启filtering启动占位符替换功能。在springboot中的占位标志为@name@,单独的maven占位标志为${name}
Maven的聚合:
父子拥有继承关系时,父项目打包方式必须声明为pom。一般来说父项目只需要一个空壳,保留pom.xml即可。所有公用的配置项均可以在父项目的pom.xml中集中配置,会自动继承到模块项目中去。
需要直接强制继承的依赖和插件可以直接在parent的pom中声明为<dependencies> 、<plugins>等。此时声明的部分在子项目中一定会存在。
不需要强制继承,只需要在子项目使用时管理插件和依赖版本等功能时,可以在标签外部使用<dependencyManagement>、<pluginManagement>。(软性声明)
项目间互相依赖,在打包时会引用其他模块或项目的资源:同引入jar包依赖一样,引入其他项目(可能存在其他项目未打包的情况,需要先打包)。type标签用于表明此依赖的类型。