一. Maven的安装与配置
1. maven的下载
2. maven的安装
将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕
3. maven的配置环境变量
MAVEN_HOME=E:\apache-maven-3.2.1Path=%MAVEN_HOME%\bin;… …
4. maven的目录介绍
4. maven的仓库的配置
Conf目录中有setting.xml配置文件: 配置本地仓库和远程仓库
- 配置本地仓库
Setting.xml的 53行复制到55行
H:\developer02\repository_maven\repository_maven\ - 配置远程仓库 (配置阿里云远程仓库 扩展)
< mirror>
< id>alimaven< /id>
< name>aliyun maven< /name>
< url>http://maven.aliyun.com/nexus/content/groups/public/< /url>
< mirrorOf>central< /mirrorOf>
< /mirror> - 将/资料/本地仓库/xxx.zip 解压
5.maven的测试
打开cmd本地控制台, 输入 mvn -version
总结:
- maven的安装 解压到没有中文的目录-配置环境变量即可
- 仓库的概念(存放jar 和插件)
- Pom文件中配置坐标引入jar
- 本地仓库和远程仓库的配置 conf下的setting.xml文件中
三. 创建Maven项目
1.IDEA整合本地Maven项目
2.IDEA创建maven工程
1.创建空的工程
3.创建java无骨架项目
4. 创建web项目
a) 创建有骨架的 webapp骨架
b) 创建无骨架的 复制webapp目录,Pom.xml中设置打包方式为war
四.Maven的常用指令及依赖管理
maven的常用指令
清理:mvn clean --删除target目录,也就是将class文件等删除
编译:mvn compile --src/main/java目录java源码编译生成class (target目录下)
测试:mvn test --src/test/java 目录编译
打包:mvn package --生成压缩文件:java项目#jar包;web项目#war包,也是放在target目录下
安装:mvn install --将压缩文件(jar或者war)上传到本地仓库
部署/发布:mvn deploy --将压缩文件上传私服
Clean 清除 target (编译后的class文件)
Compile 编译 (生成target )
Test 测试 运行测试文件
Package 打包 target下生成jar
Install 安装 生成的jar传到本地仓库
2. maven插件
a) jdk插件 // java编译插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
b) tomcat7服务器插件 //配置Tomcat插件
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/aaa</path>
<port>8888</port>
</configuration>
</plugin>
3. POM依赖管理
< dependency>中的配置:
1)groupId、artifactId、version是依赖的基本坐标,缺一不可.
2)type:依赖的类型,比如是jar包还是war包等, 默认为jar,表示依赖的jar包
3) scope:依赖范围,意思就是通过pom.xml加载进来的jar包,来什么范围内使用生效,范围包括编译时,运行时,测试时
– compile:默认值,如果选择此值,表示编译、测试和运行都使用当前jar
– test:表示只在测试时当前jar生效,在别的范围内就不能使用该jar包。
– 例如:junit 。此处不写也不报错,因为默认是compile,compile包扩了测试
– runtime,表示测试和运行时使用当前jar,编译时不用该jar包。例如:JDBC驱动。
– provided,表示编译和测试时使用当前jar,运行时不在使用该jar了。例如:servlet-api、jsp-api等。【必须填写】
– system:表示我们自己手动加入的jar包,不属于maven仓库(本地,第三方等),属于别得类库的这样的jar包,只在编译和测试期生效,运行时无效。
以后常用到的: 默认不写compile , test , provided
需求:编写一个Servlet , 访问该Servlet ,让后打印一句话.
做法:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
exclusions:排除依赖 (面试)
jar包冲突,关联引入
A项目 依赖 B项目,B项目 依赖 C项目,当使用A项目时,就会把B也给加载进来,这是传递依赖,依次类推,C也会因此给加载进来
两个B的版本不一样,将两个都加载进去就会引起冲突,这时候就需要使用exclusions这个属性配置了
添加如下配置 (在A中排除引入B依赖传递)
< scope>provided< /scope>