让咱们先回顾下本系列的前3篇博客:html
以前咱们新建的项目,项目所要依赖的第三方jar包都在项目的类路径下(一般为lib目录),以下所示:spring
使用这种方式,咱们没法知道第三方类库的依赖关系,好比导入一个特定的jar包时,可能此jar包还依赖于其余的jar包,其余的jar包又依赖于更多的jar包,这也是咱们日常遇到的ClassNotFound异常的主要缘由。apache
为了解决这个问题,咱们急需引入一个项目构建工具。目前主流的项目构建工具备:Ant、Maven、Gradle等。这里咱们选择Maven做为项目构建工具。maven
Apache Maven是一个软件项目管理工具。基于项目对象模型(Project Object Model,POM)的概念,Maven可用来管理项目的依赖、编译、文档等信息。ide
使用Maven管理项目时,项目依赖的jar包将再也不包含在项目内,而是集中放置在用户目录下的.m2文件夹下。工具
下载地址:http://maven.apache.org/网站
将下载好的apache-maven-3.6.0-bin.zip解压到本身喜欢的目录,我这边解压的目录为:E:\Program Files\apache-maven-3.6.0。
环境变量弹窗打开方式:计算机--属性--高级系统设置--“高级”选项卡--环境变量。
1)新建系统环境变量MAVEN_HOME,值为:E:\Program Files\apache-maven-3.6.0(步骤2中解压的目录)
2)编辑系统变量Path,在最后增长:;%MAVEN_HOME%\bin
打开cmd窗口,执行命令:mvn -version,若是可以正确的提示以下的版本信息,说明Maven配置成功。
打开maven下conf文件夹下的settings.xml文件,找到localRepository节点,配置本地Repository路径,我这里配置的是:E:\Java\MavenRepository。
<localRepository>E:/Java/MavenRepository</localRepository>
注意:文件中的路径和Windows下的路径不同,拷贝过来后要将\替换为/,并且不能包含中文。
打开IDE后,依次打开File--Settings,而后按照以下图所示配置Maven:
注意:该设置仅针对当前项目。
由于Maven是基于项目对象模型(Project Object Model,POM)的概念运做的,因此Maven的项目都有一个pom.xml用来管理项目的依赖以及项目的编译等功能。
<dependencies> </dependencies>
此元素包含多个项目依赖须要使用的<dependency></dependency>
。
<dependency></dependency>
内部经过groupId、artifactId、version肯定惟一的依赖,能够称这3个为坐标:
groupId:组织的惟一标识。
artifactId:项目的惟一标识。
version:项目的版本。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
<properties></properties>
可定义变量在dependency中引用,代码以下:
<properties> <java.version>1.8</java.version> <spring-framework.version>4.3.18.RELEASE</spring-framework.version> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency>
Maven提供了编译插件,可在编译插件中涉及Java的编译级别,代码以下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build>
Maven会自动根据dependency中的依赖配置,直接经过互联网在Maven中心库(https://mvnrepository.com/)下载相关依赖包到本地Maven库,本地Maven库默认是用户目录的.m2目录,但上面咱们已经把本地Maven库修改成了:E:\Java\MavenRepository。
若是你不知道你所依赖的jar包的dependency怎么写的话,推荐到https://mvnrepository.com/网站检索。
在IDEA中,选中项目根目录,依次点击右键-->Add Framework Support,而后在弹出的界面中选中Maven:
此时项目目录下,会新生成一个pom.xml文件,原始内容以下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId> <artifactId>spring-action</artifactId> <version>1.0-SNAPSHOT</version> </project>
将以前的spring-config.xml配置文件迁移至src/main/resources目录下。
打开File-->Project Structure-->Modules,将以前方式引入的第三方jar包删除:
而后经过pom文件添加jar包依赖:
<dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.github.stefanbirkner</groupId> <artifactId>system-rules</artifactId> <version>1.16.0</version> </dependency> </dependencies>
修改完pom文件记得点击“Import Changes”:
导入完成后的项目结构图为:
能够看出和以前的区别,如今的jar包都由Maven来管理,也能够查看项目的依赖树:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zwwhnly</groupId> <artifactId>spring-action</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java.version>1.8</java.version> <spring-framework.version>4.3.18.RELEASE</spring-framework.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.github.stefanbirkner</groupId> <artifactId>system-rules</artifactId> <version>1.16.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> </project>
上面讲解的方式适用于新建项目时不是Maven项目,后续转为Maven项目的操做步骤。
其实,咱们能够经过IDEA,直接新建Maven项目,而后修改pom文件为以上内容引入Spring等依赖(推荐该方式):
《Java EE开发的颠覆者:Spring Boot实战》
源码地址:https://github.com/zwwhnly/spring-action.git,欢迎下载。