Maven

1、Maven解压后就可以使用(jdk至少1.7以上),如果需要在cmd中直接使用mvn命令,则需要配置环境变量,把Maven的解压目录配置到path下,一般类似JDK配置,配置一个maven_home变量再在path下引用此变量

2、maven的配置文件就一个conf/settings.xml,默认都是空节点,如果公司没有私服,其实也可以不用配置这个配置文件,默认生成的本地仓库就是用户文件夹下的.m2/repository

3、如果在cmd环境下进行maven操作,得进入项目文件夹下,主pom.xml文件所在的文件夹,在此处按住shift加右键选择在此处打开命令行

4、mvn常用命令

4.1 :mvn clean   清理编译的文件,即target目录

4.2 :mvn compile 编译了主目录的文件(不包含test目录编译)

4.3 :mvn test  编译并运行了test目录的代码

4.4 :mvn package 打包 ,根据项目结构打成war包或jar包,生成规则根据pom.xml头部信息如version,artifactid等来进行生成包的名字,默认执行package命令,会依次执行compile-->test-->package

4.5:mvn  install 就是把项目发布到本地仓库,会依次执行compile-->test-->package-->install,使用install命令,前面几个就不需要手动执行了,会自动依次执行,这是maven的生命周期事件

4.6:mvn deploy 把项目发布到私服,会依次执行compile-->test-->package-->install-->deploy

5、不同的生命周期的命令可以一起执行,如clean并没有在上面几个命令的生命周期中,就可以把几个命令放一起执行,如mvn clean install,会先执行清理,然后编译,测试,打包,安装

6、maven一键启动 mvn tomcat:run

在eclipse中使用maven

1、安装插件,默认已经安装好了,只是使用的maven版本需要自己调整一下,点击add,选解压后的maven文件夹,

2、默认使用的仓库位置是.m2,如果需要修改本地仓库位置,还需配置一下用户设置,选择maven文件夹下的settings.xml

配置好后创建maven工程,主pom.xml下得配置一下maven的编译插件,不然默认使用的是eclipse的1.5版本,会出错

 修改编译插件后,eclipse还不识别,会出现红色小叉,这时在项目上选中项目,右击选择,选择maven-->update project强制更新编译版本后会发现引用的jdk改为了指定的1.7

 如果想在eclipse中通过按钮添加依赖jar包的话,需要调出maven repostory控制面板,然后重建一下索引,这时maven工程才能识别jar包坐标,才可以手动选择,如下

引入jar包的时候,需要注意作用范围,测试用的jar包不要最后打到编译包中,那么scope为test,如果是发布后会和web容器有冲突的jar包,如tomcat中有

servlet-api.jarjsp-api.jar,而war中也有这两个jar,那么势必会冲突,这时就可以不让打到war包中,只让其在本地编译时用就行,这时scope为provided,其他的scope使用默认的compile即可

 通过tomcat插件来启动maven项目,默认使用的是tomcat6,如果需要使用tomcat7以上版本,需要在pom中进行配置,还可以在此配置中指定web项目名称以及端口号,如下:

 运行时就得指定用tomcat7的命令运行,如 tomcat7:run

当然如果不想要插件运行,也可以发布到本地tomcat中来运行

如果是采用插件方式运行的话,那么调试就有可能进不了断点源码,这时需要在自己在调试时添加源码到调试中,或者点击项目右键选择debugger as-->debbuger configration,在弹出的界面中选中source页签,然后选择要调试的项目,选择debugger,如下:

 maven项目版本依赖冲突:

1、自己指定jar包,不用依赖传递过来的,一般情况如果没有依赖冲突,直接使用依赖传递的引用jar包就行,无需自己手动指定,但是引用的第三方jar包都依赖了不同版本的同一个jar包,这时势必会冲突,所以这时可以手动引用那个冲突的jar包及版本,这叫声明优先原则

2、如果有两个框架依赖了同一jar包不同版本,这时为了避免引入低版本jar包造成冲突,可以把高版本的第三方库放在pom的前面,这样maven发现先前已经有人引入过了,就不会再去引入依赖jar包,从而避免了版本冲突

3、在低版本的引用中添加排除,这叫jar包依赖排除,不用写version,反正就是不加载依赖的这个jar包,管你什么版本的都不加载:

4、开发中常用的是 版本锁定原则,就按照我需要的版本加载,一般定义在主pom.xml中,可以主pom只定义依赖项,也可以直接加载,properties中节点可以自定义,也就是起到变量名的作用,与下面依赖项管理一致就行,在依赖项管理中采用类似与EL表达式来赋值指定,也可以直接省去不写,如下:

原文地址:https://www.cnblogs.com/javabg/p/7353622.html