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%in
。
- 系统变量设置
- 注意: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工程:具体参考https://blog.csdn.net/qq_41855420/article/details/104130925
-
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
--.settings // 工具生成的文件 --src // 源代码 --main // --java // 项目源码 --resources // 配置文件 --webapp // web页面 --test --java // 测试源码 --resources // 测试的配置文件 --target // 编译生成的文件 pom.xml // maven配置文件
-
创建一个servlet,并集成HttpServlet(此时不能继承,因为新工程还没有jar包)
-
在web.xml中配置servlet访问路径(先不用注解形式)
<servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>baidu.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/maven</url-pattern> </servlet-mapping>
-
-
打开pom.xml文件,添加项目所依赖的jar包(从网上搜索)
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>
-
设置maven的插件(tomcat)
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
-
编写servlet,如
req.getRequestDispatcher("/hello.jsp").forward(req, resp);
-
IDEA右侧有一个maven面板,里面有许多命令,如果没有找到
execute maven goal
,并执行命令tomcan7:run
-
点击链接即可访问
访问数据库
如果想要访问mysql数据库,一般项目是先导入连接数据库的jar包,对于maven,就是写配置文件:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
常用命令
执行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声明周期:生成项目报告、站点,发布站点。
配置文件
pom.xml是Maven项目的核心配置文件,主要内容有
<project>
<groupId>项目名称/域名 com.baidu</groupId>
<artifactId>模块名称</artifactId>
<version>项目版本号</version>
<packaging >项目打包类型</packaging>
<name>项目文档的名字</name>。
<properties>可能是JDK版本</properties>
<dependencies>项目依赖的包</dependencies>
<build><plugins>项目依赖的插件</plugins></build>
</project>
依赖的包(Maven叫坐标,个人理解成指针):
<dependency>
<groupId>来源</groupId>
<artifactId>包名</artifactId>
<version>版本</version>
<scope>作用范围</scope>
</dependency>
作用范围有五个,默认compile
作用范围 编译 测试 运行
compile y y y
provided y y -
runtime - - y
test - y -
sytem y y -
项目依赖的插件,如tomcat
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>