一、maven的基本概念,项目构建工具
1.导包(不需要到处找jar包,到中央仓库找到对应的依赖,粘贴到pom.xml即可,
会自动下载到本地仓库)
2.完成项目打包
java应用程序 -- jar包
web应用程序 -- war包
3.完成项目的部署到服务器上
4.maven一些插件方便我们使用
5.项目的聚合
仓库的概念
本地仓库 程序员本地开发项目会使用到一些jar,在一个项目中用的jar在中央仓库
下载过后,以后其他的项目再用到该jar,不需要到中央仓库下载
远程仓库(中央仓库,局域网私服)
二、在eclipse使用
1.创建java应用程序(使用骨架来创建的)
maven目录结构(约定大于配置)
src -- main -- java java应用程序
-- resources 配置文件,属性文件等
src -- test -- java java的单元测试
-- resources 测试使用到的资源文件
使用应用程序
执行应用程序:
a.当做普通的应用程序执行
b. exec:java -Dexec.mainClass=org.lanqiao.test_maven01.App
2.创建web应用程序(使用骨架来创建)
maven目录结构(约定大于配置)
src -- main -- java java应用程序
-- resources 配置文件,属性文件等
-- webapp web资源,包括html,js,css,jsp,WEB-INF/lib web.xml
src -- test -- java java的单元测试
-- resources 测试使用到的资源文件
jsp文件报错!
原因:使用maven创建web工程时缺少jsp-api.jar和servlet-api.jar
解决办法:第一种方式:在构建路径中--add library--server runtime--添加apache tomcat
第二种方式(maven方式): 到中央仓库中找到servlet-api.jar的依赖
运行web应用程序
a.当做普通的web应用程序,使用本机的tomcat运行
b.使用maven的tomcat插件来运行
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!--控制tomcat端口号 -->
<configuration>
<port>80</port>
<!-- 发布到tomcat后的名称 -->
<!--/ 相当于把项目发布成ROOT -->
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
</plugins>
</build>
maven方式运行: tomcat7:run
3.使用空骨架创建项目
<packaging>war</packaging> 创建web应用程序
<packaging>jar</packaging> 创建普通的java应用程序
三、maven的生命周期
通过maven的命令体现的
maven:clean 清理target文件 清理生命周期
默认的生命周期
mvn compile 编译源代码
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn package 根据项目生成的jar,war
mvn install 在本地Repository中安装jar
mvn deploy 发布项目
四、maven的依赖
1.maven的坐标(三要素)三要素合起来保证唯一的
<groupId>org.lanqiao</groupId>
<artifactId>test_maven01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<groupId>org.lanqiao</groupId>
<artifactId>test_maven02</artifactId>
<version>0.0.1-SNAPSHOT</version>
项目小
groupId: -- 组织名或公司名
artifactId: 项目的名称
version 版本号
项目大:
groupId: -- 项目名
artifactId: 模块名称
version 版本号
版本的说明:
0.0.1-SNAPSHOT 快照版
0.0.1-beta 测试版(正式版之前发布出来,已经经过公司内部测试团队测试过,供广大用户来测试,用户把使用情况反馈给 公司,公司根据反馈再次做出调整,1种用户体验,1种bug)
0.0.1-release 发布版(正式版)
0.0.1 - 0.0.2 改一个或多个bug,小版本升级
0.0.1 - 0.1.0 新增一个模块或者功能
0.0.1- 1.0.0 大升级,技术架构或者功能做了非常大的变化,大版本升级
2.maven依赖的作用范围
<scope></scope>
compile 默认的范围 指定的jar会在编译时生效,测试的时候生效,运行时也会生效
test 编译时不会使用该jar, 测试使用该jar,运行时不会使用该jar
provided
runtime
system
3.依赖的传递
在一个项目中,不能出现重复的jar包的,重复的会产生冲突
maven会自动不光导入本身的jar,还有所有该jar所依赖的包都会导入进来
会有一些问题产生
项目 - A.jar - B.jar -X- C.jar
|
项目 - T.jar - C.jar
会产生C.jar的冲突,maven是如何解决的?
maven使用2个原则:
第一个:路径最短原则
maven会采用 T.jar - C.jar
第二个:采用顺序原则,谁先导入就用谁
项目 - A.jar - C.jar
项目 - T.jar - C.jar
项目 - K.jar - P.jar
不希望使用k.jar依赖的P.jar
原文:https://www.cnblogs.com/yaoyaoo/p/14280530.html