Maven
maven是apach开源的一个项目管理工具,maven在美国口语中表示专家、内行的意思,因此它可以做很多事情。
maven可以解决的问题:
- 自动引用各种jar包,不用自己搜索下载导入
- 编译Java文件(IDEA也可以即时编译)
- 自动运行单元测试,不用自己做
- 项目打包并部署项目
maven的两个经典应用:
- Maven的依赖管理:普通项目的jar直接放在项目里,项目之间不可重用;而maven工程的jar包存放在jar的仓库中,使用jar的坐标找到jar包(索引/指针,在pom.xml文件内)。
- 项目的一键构建:一个命令完成项目编译、测试、报告、打包、部署。
安装和配置
安装
- 从官网下载
- 解压即可
- 配置环境变量
- 系统变量设置
MAVEN_HOME
等于D:\apache-maven-3.5.2-bin
- 在系统变量Path中添加
%MAVEN_HOME%\bin
。
- 系统变量设置
- 注意:maven运行依赖jdk,并且有系统变量
JAVA_HOME
- cmd窗口运行
mvn -v
检测
仓库配置
maven会自动将需要的jar包从*仓库下载到c盘,这里叫本地仓库。
公司一般建立一个自己的仓库,叫远程仓库(私服)。远程仓库可以从*仓库下载,也可以自己上传。
因此,maven工程先从本地找,再从远程找,再从*找。
设置本地仓库位置:找到conf目录下面的settings.xml文件,在注释下面添加
<localRepository>D:\maven_repository</localRepository>
IDEA集成
在intelliJ IDEA中构建maven项目,首先安装好maven,然后:
- settings->Build Tools->maven设置
- Maven home directory: 自己安装位置
- User setting file: 配置文件位置(安装位置下面)
- Local repository: 本地仓库位置
- settings->Build Tools->maven->runner设置本地仓库优先
- VM Options:
-DarchetypeCatalog=internal
- VM Options:
创建JavaWeb工程:
-
new project->maven->使用maven工程提供的模板
- 选择Create from archetype
- 选择
org.apache.maven.archetypes:maven-archetype-webapp
-
设置项目名、maven安装位置、配置文件、本地仓库(检查是否和上面一致)。
-
在src/main下面创建两个文件夹
java
和resources
- 右键java->mark directory as->sources root
- 右键resources->mark directory as->resources root
-
创建一个servlet,并集成HttpServlet(此时不能继承,因为新工程还没有jar包)
-
打开pom.xml文件,添加项目所需要的jar包
- 有jar包提示,说明本地有jar包;
- 否则,从maven*仓库找到配置信息,复制即可,电脑可自动下载。
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency>
-
编写servlet,如
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
-
IDEA右侧有一个maven面板,里面有许多命令,如果没有找到
execute maven goal
,并执行命令tomcan:run
目录结构 :
--.settings // 工具生成的文件
--src // 源代码
--main //
--java // 项目源码
--resources // 配置文件
--webapp // web页面
--test
--java // 测试源码
--resources // 测试的配置文件
--target // 编译生成的文件
pom.xml // maven配置文件
常用命令
执行maven命令,需要进入项目的根目录
- 清楚:
mvn clean
(新环境,都需要先清楚) - 编译:
mvn compile
生成targe文件夹,里面都是编译文件 - 测试:
mvn test
执行src/test/java下的所有单元测试 - 打包:
mvn package
将java工程打包成jar包,将web工程打包成war包(到target文件夹) - 安装:
mvn install
打包并发布到本地仓库(本地仓库中会有 自己定义的包的路径) - 发布:
mvn deploy
部署之前需要设置配置文件(先跳过这里)
声明周期:(了解)
- 清理生命周期:上面第一个命令,构建项目之前进行清理工作
- 默认声明周期:上面2-6个命令,也是核心部分
- site声明周期:生成项目报告、站点,发布站点。