Maven项目管理
Maven入门:
安装地址:http://maven.apache.org/download.cgi
配置完后可以ctrl + r 进入cmd输入命令 mvn -v,如果有输出版本信息,则表示成功配置:
Maven的优点:
如果是普通的SSM项目,在项目内需要配置很多jar包,项目的体积本来只需要几k保存,添加上jar包会达到十几M的大小
本地仓库的位置默认在用户目录下的.m2下:
Maven中pom.xml依赖结构:
依赖是什么?就是jar包,只不过使用maven,jar不用包含再项目里,而是从本地仓库里链接过来用
<!---->
<!--最外层用dependencies包围(本地寻找)-->
<dependencies>
<!--每个依赖用dependency包围-->
<dependency>
<!--由公司/组织名或者包名(groupId) + 项目名/子项目名(artifactId) + 版本号(version),每个jar包都要的信息,这样maven才能够定位到jar包的位置,
、具体名称都是什么需要从阿里云上查看-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>7.0.47</version>
<!--除了定位信息,还可以添加scope作用域便签-->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>7.0.47</version>
<scope>provided</scope>
</dependency>
</dependencies>
因为maven通过坐标获得本地仓库的jar位置,所以再pom.xml中:
如果要修改仓库的默认位置,到maven解压目录下conf文件中的settings.xml:
在settings标签内加入:
<localRepository>D:/repository</localRepository>
Maven三种仓库:
阿里云仓库:https://maven.aliyun.com/mvn/search
使用阿里云的仓库虽然下载快,但是有时候更新补全,最后还是要到maven维护的仓库下载
配置阿里云:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
maven构建项目命令(需要先配置bin路径到Path下)并运行在tomcat(内置):
项目里首先需要有pom.xml(maven的坐标文件)
mvn tomcat:run
运行完毕后再项目目录下会生成一个target文件
Maven常用命令:
关于maven命令的执行顺序问题:
如果执行了test,则mvn会自动执行compile、test-compile、test
如果执行了install,则所有命令都会顺序执行
如果执行了compile,则只会执行compile,不会执行其他命令
maven中的scope标签:
这个标签的作用再解决多个jar包冲突时可用的解决方案
provided:在运行,测试有效,在打包时不会将jar包加入到项目里,这样可以解决tomcat包的冲突。
其他值的作用如下所示:
Maven 模块化开发:
Maven支持项目的继承结构,子项目可以使用父项目中pom.xml配置的依赖:
如何实现?
只要在父项目中加入:
<modules>
<module>子项目名称</module>
</modules>
Maven中的依赖冲突:
父项目定义的版本号子项目可以修改,这样是不利于管理的,可以在父项目中锁定版本号:
dependencyManagement标签内容如下所示:
只要将依赖的内容原封不动的写在里面就可以了,会根据名称锁定版本号,不会真正的引入jar包,导入jar包还要使用独立的dependencies标签:
<dependencyManagement>
<dependencies>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</dependencies>
</dependencyManagement>