Maven
从前项目的问题:
1.需要添加jar包(包之间的兼容性)
2.运行代码,测试麻烦
安装maven并配置
1.解压maven,最好不要放太深,最好不要有中文
2.打开环境变量,配置MAVEN_HOME------maven 路径
3.配置path ----%MAVEN_HOME%
4.在cmd 输入 mvn -v 测试成功否
1.Maven 定义作用
2.1、Maven 翻译为“知识的积累”,“专家”,“行家”,是一个跨平台的项目管理工具;
2.2、Maven 主要用作基于 Java 平台的项目(Maven 本身也是 Java 编写的)的构建、依赖包管理和项目信息管理;
2.3、Maven 能提供一种项目的配置,配置好的项目,只需要运行一条简单的命令,就能完成重复的,繁琐的构建动作;
2.4、Maven 能提供一种项目的依赖配置,配置好的项目,Maven 能自动的从 Maven 的中央仓库中帮我们下载并管理项目依赖的 jar 包,并且还能自动的管理这些 jar 包依赖的其他 jar 包;
2.5、Maven 提供了一种标准的项目目录结构,测试命名规则等项目的最佳实践方案,统一了不同项目的学习成本(约定大于配置)。
2.Maven设置
1、.m2 目录
运行过 Maven 命令才会生成该目录,该目录默认情况下存放 Maven 本地仓库,本地仓库是一个 repository 文件夹,里面主要是一些下载的 jar 文件。
通过 mvn install 命令会把自己项目打成包存放在本地仓库中。
2、修改本地仓库的位置
本地仓库默认位置在 ${user.home}/.m2/repository,本地仓库不建议在系统盘,最佳实践:
2.1、将 Maven 根目录的 conf/settings.xml 拷贝到 .m2 中,作为个人 Maven 配置文件;
2.2、在 settings.xml 文件中 <localRepository> 修改本地仓库的位置。
3、配置中央仓库镜像
原因:有网情况,官方中央仓库在国外,下载很慢;无网情况(但在局域网),不能下载。
3.1、有网情况
在 setting.xml 中配置国内的阿里镜像:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.2、无网情况
先在局域网找一个主机(可以上网)搭建 Maven 私服。
再在 setting.xml 中配置 Maven 私服镜像:
<mirror>
<id>localmaven</id>
<name>local maven</name>
<url>Maven 私服地址</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.Eclipse配置Maven
1.在windows 找到maven--installations 选择maven目录
2.设置settings.xml和本地仓库位置 ---user Settings
3.下载源码设置 maven中勾选 Download Artifact Sources
4.maven创建se项目
1.新建maven项目
2.跳过框架,填写公司名,版本号,打包方式选为jar
3.建立本地仓库索引
右键local.....-----Rebuild Index
4.在pom.xml中添加依赖
3.1 右键maven--addDependency 添加依赖
3.2 还可以在官网查询依赖 复制
5.使用maven命令
5.maven创建web项目
1.新建maven项目
2.跳过框架,填写公司名,版本号,打包方式选为war
3.在webapp下添加WEB-INF/web.xml文件
4.添加插件---修改项目的编译版本为1.8
5.在Maven | Update Project更新项目
6.添加依赖 servlet的依赖 ** 注意要写<scope>provide</scope>
7.编写servet和jsp 测试
8.配置Tomcat插件----启动Tomcat-----输入tomcat7:run
6.坐标
Maven中的坐标
标识项目在仓库中的位置。主要由下面构成:
groupId:项目名称,一般使用公司或组织域名倒写,域名具有唯一性,区分不同公司;
artifactId:项目中 Maven 项目/模块名称,区分同一个公司的项目;
version:项目版本,区分同一个项目不同时期的特点。
7.依赖
配置项目所要依赖的jar,在pom.xml使用dependency元素配置,通过坐标先从仓库找。
2.1、scope
Maven在编译,测试,运行的时候,各需要一套classpath(比如编译的时候会有编译的 classpath,测试的时候会有测试的 classpath)。
scope表明该依赖的项目和三个classpath 的关系,即表示依赖什么阶段起作用,什么阶段不起作用。
scope 主要可选值:
a、compile:默认,适用于所有阶段,会随着项目一起发布,在编译,测试,运行时都有效;
b、provided:编译和测试阶段使用;典型的如 servlet-api.jar,打包时不需要,容器来提供;
c、runtime:测试和运行阶段使用,用于接口和实现分离,典型的如 jdbc 具体驱动实现;
d、test:测试阶段使用,不会随项目发布,如 junit。
2.2、传递性
Maven的依赖是具有传递性的,比如 A -> B,B -> C,那么A间接的依赖于C,这就是依赖的传递性,其中A对于B是第一直接依赖,B对于C是第二直接依赖,C为A的传递性依赖。依赖的传递性可以解决依赖繁琐的问题。