近日maven学习概况

    浅识maven

    最近闲来无事,想丰富自己的知识库(我会告诉你,我准备打算换山头吗?),提升自己行业岗位中的竞争力。就随手去翻看了下maven的一些知识文章,起初都不知道maven为何物,因为我只知道ant是蚂蚁,而不晓得是Another Neat Tool。就这样,就是搜索浏览了一番相关技术资料。看到《maven实战》不错,比较系统全面的讲解maven技术的书籍。

    maven 按照我现在的理解,就是以前初学者的所有相关的项目构建(clean,编译,测试,部署,安装)的手动操作,相当于类似一键式的操作步骤。(应该还有一大套的理论东西,来叙述maven的优越之处,不过,悄悄的听说,Hibernate迁移到Gradle。我的内心波澜起伏,但是,信念很重要呀。坚定一个想法,对自己好的地方,当然就要学习采纳啦。因为学习maven之后,就能够对项目构建有更多的认识和理解。再说,Gradle也是从maven之后发展起来的,吸收了很多maven的东西,所以学习曲线,应该没有太高啦。)

    言归正传,maven是Apache旗下的一项开源技术软件。软件都是从认知了解,然后安装使用的。maven当然也不例外,省略这一套的maven下载,环境配置初学者的步骤吧。

    maven中有至关重要的一点,COC(Convention Over Configuration)约定优于配置,很多的技术框架在配置文件中,这点是约定俗成的。maven的核心配置文件为pom.xml(Project Object Model项目对象模型,不是特别懂。不过,应该也是把整个项目当成一个对象,从而可以操作组织这个POM,最后这个项目在java中会packaging打包成jar包文件,以便其他项目依赖使用。宏观上来看吧。)

近日maven学习概况_第1张图片

maven构建的项目也要符合一定的目录结构,上图是spring的sample,就是采用maven来构建的。大致来说,就是maven构建项目,有源程序代码和测试程序代码,以及相关的resources资源文件。都是在src下相对独立的文件层级目录。

 这个是java源程序代码的目录。在此目录下就可以定义java包路径,编写程序源代码。

这个是测试代码的目录。此目录下,可以编写相关的测试程序代码。

在图中可以看到Maven Dependencies字样的外部引用jar包。这些jar包,都不是手动引用导入的,是maven从中央仓库中下载的,此spring sample项目所引用的jar包的声明,都在pom.xml文件中进行配置,功能类似于Ant中的build.xml文件。

近日maven学习概况_第2张图片

在pom.xml文件中可以看到如上图所示的部分配置信息。这个xml(我喜欢,阅读很方便,顾名思义。)

<project>...</project> 表示当前整个项目(一般大的项目会分很多的构件模块artifact,而每个构件模块又是单独的一个project。),其中项目的内容信息,都在此tag中。

<modelVersion> 这个模块项目的版本号。

<groupId> 一般可以看作是组织的Id标识。此项内容,一般是关联着公司组织的标识,如org.apache.maven,就是apache公司旗下的项目。

<artifactId>构建标识,当前artifact构建模块在组中的Id,一般都是项目-模块的信息,maven-build,这个在某些jar包的名称中,可以发现。

<version>当前构件模块的版本号,SNAPSHOTS快照版,处于开发中且不稳定的版本。

以上三个Tag可以用来标识maven项目中构件模块的坐标(这个概念,嘿嘿,就是发布生成的jar包的名称相互关联的,下边的<dependencies>信息中,也有这三个Tag来标识某个构件的坐标)。

<name> 项目名称,非必须,便于阅读。

<packaging>要打包的文件格式,一般默认为jar,可以选在war。

<properties>在POM中定义的属性信息,一般都是版本号,方便维护修改。

<dependencies>表示依赖多个dependency,就是需要引用外部的多个jar包。

<dependency>定义描述该依赖的相关信息。

<exclusions>因为在依赖的构件中,可能还引用了其他的构件,但是,不需要此依赖时,可以排除多个依赖。

以上重要的部分,坐标和依赖。(觉得自己的表达水平还有待提升,很多想要说的话,不能够完全的表达想要的意思。难道太晚,脑袋秀逗啦。)

后面再补充完善吧,其实在项目中,很少接触到这样的技术(码农需要拓展),希望以后能够维持自己的这股热忱,一如既往,洗洗睡啦~~



你可能感兴趣的:(maven)