当咱们新建一个项目,在项目中完成html
在这些业务建立时须要导入不少jar包,或者在建立不少类似的项目时总体架构一样是类似的,好比须要contextConfiguration.xml、Struts-Config.xml、Hibernate.xml、Properties.xml之类的文件。这些都是重复的操做,若是咱们没有maven工程就须要在每次业务中完成这些操做。java
咱们来看看百度百科对Maven的解释mysql
咱们在使用Maven时应该告诉maven的一些内容:web
在Maven的官网https://maven.apache.org/download.cgi中下载spring
注意:在maven安装以前,必定要已经安装了jdksql
只须要将maven所在的目录的bin文件配置到Path环境变量中,这样作的目的是在命令行的任意目录下,均可以使用“maven”命令操做。apache
MAVEN_HOME类比JAVA_HOME ,把maven所在目录配置到这个MAVEN_HOME中安全
maven的安装目录的conf文件夹中有一个settings.xml文件,而官网中又说在.m2文件夹下也有这样一个文件,这是一个默认文件夹,咱们并不能发现。架构
将conf中的settings.xml文件复制到.m2文件下以后完成配置。mvc
项目目录结构,实际上指的是maven要求的项目必须的目录层次。
在这里咱们要记住一句话:约定优于配置(Convention Over Configuration)
要使用maven进行jar包管理,以及项目的构建和管理等等,就要遵循maven的规定。在咱们平时的写java项目的时候,在Eclipse/IDEA中想怎么建立就怎么建立,但在使用maven时,就不能这么为所欲为。
注意是resources文件,图上画错了。
对不起了各位(狗头)
首先建立文件夹Maven,并按照上面的maven项目结构建立各类文件夹和文件。
在java文件夹中编写java程序,而且在网上找pom.xml的文件内容进行配置。
使用命令行进入到maven的工程中“Maven”,进行编译的命令是mvn.compile。
以上过程当中具体的配置信息以我的为准
该文件是maven的全局配置文件 (相似于-web项目中的web.xml),其中有许多标签,这里选择一些重要的列举。
(1)mirrors
在settings.xml文件中有一个mirrors标签,它表示配置镜像所在的路径的。默认的地址是国外的:https://repo.maven.apache…,maven要帮咱们管理jar包,这些jar包下载的地址是从该地址下的,固然这个下载地址能够改变,就是经过mirrors标签。
<mirror> <id>alimaven</id> <name>aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
将这段代码配置到mirrors标签中便可。这是由于国外镜像的下载速度比较慢,因此能够考虑国内的奖项地址,好比阿里云
(2)localRepository
settings.xml文件中默认的本地仓库的位置在${user.home}/.m2/repository,固然咱们能够对这个位置进行给更改:<localRepository>D://temp//repo</localRepository>
(自行指定)
(3)interactiveMode
标识maven是否须要和用户交互以得到输入。若是maven须要和用户交互以得到输入,那么则设置成true,否则则设置尾false。
(4)offline
标识maven是否须要在离线模式在运行
(5)pluginGroups
当插件的组织id(group)没有显示提供时,供搜寻插件组织id的列表
(6)proxies
用来配置不一样的代理
(7)profiles
根据环境参数来调整构建配置的列表
(8)servers
仓库的下载和部署是在pom.xml文件中定义的。好比用户名,密码须要访问远程仓库的时候,有时须要安全认证,这个认证就能够配置在servers标签中。
maven把jar包自动下载下来以后,这个保存jar包的目录是由咱们本身指定的,能够本身指定这个目录存储的位置。固然它也有一个默认的位置 。
在maven构建项目的时候,它会帮助咱们把项目中所须要的一些基础的jar包下载下来,这个下载的地址就是由settings.xml文件里面的mirrors标签所指定的。
maven仓库,实际上指的就是jar包下载下来以后保存的目录。
settings.xml文件中默认的本地仓库的位置在${user.home}/.m2/repository,固然咱们能够对这个位置进行给更改:<localRepository>D://temp//repo</localRepository>
(自行指定)
pom (project object model)项目对象模型,它为惟一表示该项目的文件
三个必填字段
由groupId、artifactId、version所组成的文件就能够惟一肯定一个项目
groupId标识项目组(一般为公司的域名)组织
artifactId项目名称
version版本号
这三个标签是必填标签
dependencied标签 用来配置项目中具体须要用到的jar包
properties标签 用来定义pom中的一些属性
bulid 指定如何构建当前项目
source:指定了当前构建的souce目录
plugin:指定了进行构建时使用的插件
package标签 指定当前构建项目的类型,war、jar、pom
注意:pom文件时能够继承的,一个pom文件想要使用另外一个pom文件中的内容,就可使用继承的方式。
上面咱们提到了pom文件中有一个dependencies标签,里面能够包含不少的dependency标签。这些标签就是maven的依赖。
maven项目中要下载指定的jar包,实际上就是在poim.xml我呢见的dependencies标签中进行配置,那这个dependencies怎么写,具体就是在 http://mvnrepository.com/ 中进行搜索。
进入网址以后搜索须要用到的工程的jar包,好比这里咱们须要用到Spring的jar包,搜索以后选择一个版本,就能够获得dependenices标签的具体内容,将这段xml文件代码复制粘贴到本地仓库的pom文件中便可。再次对maven及逆行编译,就能够将jar包导入本地仓库。(注意:直接导入到工程中的pom文件中也是能够的,可是在删除pom文件中的jar包以后本地仓库中依旧会存在这个依赖)。
什么是插件?
从官网中咱们能够看出:maven其实是一个依赖插件执行的框架,每一个任务都是由插件完成的。
两种插件类型:
<bulid>
标签中进行配置<reporting>
标签中进行配置你们能够在官网中自行查看 (https://maven.apache.org/plugins/index.html)
这里列举一些经常使用的插件:
<!--配置bulid类型的插件--> <build> <plugins> <!--表示写好了一个clean类型的插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>2.5</version> </plugin> <!--表示写好了一个deploy类型的插件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.5</version> </plugin> </plugins> </build>
当咱们在完成一个项目后须要新建一个项目,而且这个项目与咱们完成的项目有些许类似的时候,咱们会将已经完成的项目中的一些内容拷贝过去。若是不适用maven,咱们须要把大量的工具类、包逐个拷贝。但若是咱们使用maven后,能够将这些内容封装在archetype中直接拷贝,这就方便了咱们的操做。
对于maven自己来讲,它会帮咱们已经定义好一些archetype(脚手架),这些archetype时咱们开发中经常使用的一些项目模板,当咱们新建maven项目的时候,只须要选择对应的archetype便可。
可是有时官方提供的东西不符合我的定制化的须要,因此咱们能够本身定义一套archetype。
在pom.xml文件中定义一个插件
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.5</version> </plugin> </plugins> </build>
在pom.xml文件所在的目录使用mvn archetype:generate
先在命令行中用mvn archetype:create-form-project
命令建立出target文件夹。
在target目录中会生成一个自定义的骨架。
在target中有一个generate-sources文件夹,在这个文件夹里就存放着archetype(脚手架)文件夹。
在本地安装一下这个archetype
mvn install
就把刚才的archetype安装到了本地。
在咱们须要在项目中导入jar包的时候,若是使用的是国外的镜像,那么下载速度比较慢。若是使用的是阿里云之类的国内镜像速度还算能够。可是假如网速很差的状况下也是比较慢的。又若是在没有网的状况下就没法下载。
对于以上出现的状况,咱们应该有这样的疑问:在团队开发的时候,是否是每一个人在本身本地仓库都须要下载一份?能不能你们公用一份?
为了解决这个问题,咱们就引入了maven私服。
假如当咱们某个maven项目须要一份jar包的时候(假如就是mysql-connection.jar),先看一下本地仓库中是否有这个jar包(版本也要判断),若是有,则不下载。若是没有,则去下载,而且保存到本地仓库中,若是之后须要就不须要下载了。在项目中进行开发的时候,仅仅就是将本地仓库的jar包导入到工程里面便可,不再用像传统原始方式那样,每一个项目厚葬都须要有单独一个jar包,这样就不会形成jar包的冗余。
在以前提到的建立maven项目时,新建的都是单一的maven。
而在业务开发中咱们不少状况下都要用到聚合项目——多module的maven项目。
Maven实际上能够有一个父项目,父项目下能够有不少子项目。
这里的Spring就是父项目,而其下的springmvc和springjdbc就是子项目。
方法:在建立完Spring的maven项目以后,删除掉main文件夹,再在Spring下建立springmvc和springjdbc的maven项目。