2018.6.14
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件(决定了从哪里下载jar包,我的这个文件是重新下过的,不是用的默认的,里面有这样的一段:
这就决定了我的jar包是从阿里云下载的,这样下载的速度会快一点,而下载在哪里则由这个决定);
pom.xml文件是由maven项目产生的
而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。
(当然maven项目是可以相互依赖的,你可以创建一个父类的maven项目,里面就配置一个pom文件,用来配置jar包,那么你其他的项目里面的依赖都可以引用这个父pom里面的配置,那么以后要跟新版本的时候,直接在父pom修改版本就ok了,其他的都会跟新。但是如果你在子pom中指定了版本号,那么它就会用你指定的版本,不会去引用父的那个版本了)
以下是pom文件里面的详细解释
<properties></properties>,这个是定义一些常量,你可以在声明jar包版本时直接引用。引用格式如下:
还有一个不太常用的属性classifier,目前我还没有用到,不是很懂,之后再理解补充吧。用法大概是这样的
那么如何来引用jar包呢,格式是这样的。
每一个jar包的引用最基本的都是这三个属性(一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程),groupId,artfactId,version。当然还有其他的属性,这个后面再讲。先讲一个scope
scope也是放在dependency中的一个属性,maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制,scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围)
构建配置
大框跟引用依赖<dependencies></dependencies>一样,用的是<build></build>,然后再在这里面写配置。
产生的构件的文件名,默认值是${artifactId}-${version}
构建产生的所有文件存放的目录,默认为${basedir}/target,即项目根目录下的target
应该是过滤器,具体用途不太清楚
项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里
其中
描述存放资源的目录,该路径相对POM路径,(应该跟上面那个directory一样吧。。。)
包含的模式列表,目前还不太懂干嘛的
是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。目前还不太懂。。。
插件,也在build里面,格式是这样的,里面还是最基本的那三个东西
除了这三个东西,里面还能配置别的属性,例如这样的,但现在也不是很清楚做什么用的。
Maven的pom.xml第一次的解析就到这里。其中还有很多配置没有讲,如分发配置,仓库配置,profile配置,报表配置,环境配置,项目信息配置等,包括上面讲了的基础配置,也有很多没有讲明白。在后面的学习中,我会尽量的讲完,学习的完整一点。这次的编排也是很粗糙,还不太会使用这个工具,后面都会有所改善。