前言
1.依赖管理
在传统的Java项目开发中,如果当前项目依赖很多第三方jar包,我们就需要手动去网上载相应的jar包,放到当前lib目录下以供项目调用;
随着开发项目数量以及各个项目依赖包的逐渐增多,难以解决每个项目中第三方jar包之间的依赖关系,也难以对开发者电脑中所有Java项目的依赖jar包进行统一管理。
于是我们使用Maven把开发者电脑中所有Java项目的依赖jar进行统一管理起来;
2.项目构建
在本地开发环境中,IDEA内置了Maven可以帮助我们做Java项目的构建;
脱落本地IDE环境之后,Maven可以对Java项目进行
- Maven项目的构建
- 编译
- 打包
- 部署
一、Maven简介
-
依赖管理: Maven可以对开发者电脑中的Java项目依赖的jar包进行统一管理
-
1.依赖包管理
以下是Maven管理第三方jar包的机制;
1.1.Maven本地仓库
Maven把当前项目所需要的jar包,统一存放在Maven本地仓库中,项目按需引入。
1.2.Maven本地仓库结构
Maven本地仓库按照目录分层的结构对第三方jar包进行统一保存,避免依赖包冲突;
1.3.Maven仓库类型
Maven的仓库分为
- 本地仓库: 在开发人员使用的电脑中保存当前PC中所有Java项目所依赖的jar包。
- 私服: 在公司内网服务器上保存jar包,本地仓库可以保存的依赖jar包有限时,可以去公司的私服去下载并存储到本地仓库。
- 中央仓库: 在公网服务器上,存储着大量jar包。
2.Maven完成项目构建
Maven对1个Java项目构建的过程,称为项目的生命周期。
Maven可以通过Maven命令,完成1个项目的生命周期。
compile ----》test----》package也会自动执行。
1.清理生命周期(Clean Lifecycle)
在进行真正的构建之前进行一些清理工作。
clean
2.默认生命周期(Default Lifecycle)
项目构建的核心部分,包括编译,测试,打包,安装,部署。
compile ----》test----》package----》install----》deploy
3.站点生命周期(Site Lifecycle )
生成项目报告,站点,发布站点。
site
2.2.Maven命令
Maven通过以下命令,完成以上3种项目生命周期。
Maven在Linux平台进行构建
mvn clean -s pom.xml
mvn package -s pom.xml
mvn install -s pom.xml
mvn clean install -s pom.xml
maven支持的依赖范围主要有下面几种:
- compile: 默认依赖范围,作用域在编译、测试、运行时都有效。
- test:作用域在测试时有效。编译和运行时不需要,比如:Junit。
- provided:作用域在编译、测试时有效。运行时不需要,比如servlet-api被tomcat容器提供。
- runtime:作用域在测试、运行时有效。编译时不需要,比如:jdbc的驱动包。
二、Maven安装
1.Maven下载
2.Maven目录结构
3.Maven安装测试
C:\Users\13220>mvn -v Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00) Maven home: D:\maven\bin\.. Java version: 1.8.0_40, vendor: Oracle Corporation Java home: D:\JDK8 Default locale: zh_CN, platform encoding: GBK OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"
4.Maven本地仓库位置配置
<localRepository>D:/maven_packages/m2/repository</localRepository>
5.Maven中央仓库位置配置
配置为国内阿里云Maven仓库地址
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
6.Maven使用JDK版本配置
在配置完maven的jdk版本之后,maven会自动去网络上下载相应的JDK版本。
在项目开发阶段:maven项目编译时不会调用本地的JDK。
在项目运行阶段:但是当maven项目编译完成后,运行阶段会使用本地的JDK。
<profiles> <profile> <id>jdk-1.8</id> <activation> <activeByDefault>true</activeByDefault> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> </profiles>
三、IDEA集成Maven
1.pom文件配置
每1个Maven项目都有1个pom文件,我们可以在这个pom文件中声明当前项目,需要的第三方依赖和插件的资源坐标。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<!--jdk环境--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <!--依赖管理--> <dependencies> <!--数据连接相关--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.0</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </dependency> <!--json转换--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.8</version> </dependency> <!--servlet jsp--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!--日志--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies> <build> <plugins> <!-- 编译字符集控制 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
四、IDEA创建Maven工程
本章节介绍如何使用IDEA创建1个Maven项目。
1.导入JBLJavaToWeb插件
JBLJavaToWeb插件可以把1个普通的Maven项目转换成Maven Web项目;
2.Maven Web