Maven是Apache旗下一款面向java项目的管理工具,主要用来自动下载工具包、自动管理工具包之间依赖关系和自动管理工具包版本,Maven官网Maven官网。
- Maven核心概念
- Maven目录结构
- Maven命令
- Maven应用
4.1 Maven安装和配置
4.2 IDEA 中配置Maven
4.3 使用Maven创建普通的Java项目和web项目 - Pom文件常用属性
1. Maven核心概念
1) POM:项目对象模型(Project object Model,POM)是一个XML格式的文件, 项目广义上来讲是关于源码、配置文件和不同角色开发人员等一系列元素的结合,在Maven项目中,一个POM文件就是一个项目,POM文件中包含了项目的所有配置信息和依赖资源。
2)约定的目录结构:Maven目录结构和文件存放位置都是确定。
3)坐标:用来唯一标识项目。
4)依赖管理:管理项目中使用的jar包。
5)仓库管理:存放项目中依赖第三方库的地方。
6)生命周期:maven构建项目的整个过程。
7)插件:执行Maven每个生命阶段都是通过Maven插件实现的,例如clean是使用Maven-clean-plugin插件实现。
8)继承:一个Maven项目继承另外一个Maven项目中的依赖,当多个项目都需要依赖一些共同的工具包时,为了方便管理,通常将这些项目中共同的依赖抽象到父项目中。
2. Maven目录结构
Maven中遵循一种约定俗成的目录结构。
src
main
java/存放程序源文件
resources/存放程序配置文件和资源
test
java/存放程序测试源文件,测试类的命名方式必须为XxxTest.java,测试方法名为void xxxTest(),必须不能有返回值。
resources/测试程序配置文件和资源
pom.xml 项目开发打包环境、jar文件坐标
3. Maven命令
-
compile
编译程序,会在src 创建target目录,将编译好的class文件放在target/classes目录下。 -
Test
测试test/java/目录下所有测试类中的所有测试方法。 -
clear
删除target目录。 -
package
项目打包成jar包或者war包,放在target目录下,包名格式为groupId.artifactId.version。 -
Install
复制打包好的程序到本地仓库repository。 -
deploy
将打包好的项目放到tomcat的webapps目录下。
4. Maven应用
4.1 Maven安装和配置
1)下载Maven:https://maven.apache.org/download.cgi,本次安装下载了apache-maven-3.8.1。
2)解压Maven到指定目录,
子目录conf : Maven本身配置文件settings.xml。
3)修改资源仓库repository的网址,默认为中央仓库,修改为国内的阿里中央仓库,在settings.xml中加入下面的配置信息 。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
repository: 本地仓库,所有下载jar包在本机存储位置。
远程仓库:
中央仓库:Maven提供的最权威的仓库。
中央仓库镜像:中央仓库的镜像,在各个州和重要城市都有。
私服:一些公司获取组织内部创建的仓库,一般只有内网才能访问。
4)配置Maven环境变量:
创建环境变量MVM_HOME: D:\apache-maven-3.8.1。
再将变量MVM_HOME加入到path中%MVN_HOME%\bin。
5)验证maven配置成功:mvn -v 。
4.2 IDEA 中配置Maven
File-》settings找到maven配置页。(只对本项目有效)
File-》New Projects Settings-》Settings for New Projects找到Maven配置页。(对后面创建的Maven项目都有效)
Note:在Maven配置文件settings.xml中修改Local repository的存放路径。
<localRepository>D:\apache-maven-3.8.1\repository</localRepository>
Note:有些IDEA编辑器需要重启后配置才能生效,不同版本IDEA设置有少许不同。
4.3 使用Maven创建普通的Java项目和web项目
(1)创建普通的java项目
Note:不同版本的Maven版本创建出来的项目目录结构可能有所不同,在该版本中main和test目录下面都没有resources目录。
(2) 创建java web项目
创建的web项目目录结构如下:
5 Pom文件常用属性
settings.xml是全局级别的配置文件,pom.xml是全局级别的配置文件。
2.POM文件解析
1) 项目坐标:用来唯一标识一个项目
org.codehaus.mojo
项目名
my-project
版本号
1.0
坐标可以不要求三个都写,一个或者两个也可以。
2) packaging:项目打包后的扩展名,默认为jar,web是war
可以选择不写,默认就是jar。
3) dependencies和dependency,引入第三方jar包
dependencies可以包含多个dependency,每个dependency确定一个jar包。
4) properties用来定义一些配置属性,例如项目编译时版本、项目文件编码方式,还可以设置一些全局变量,在pom总通过${标签名}进行引用,可以方便多个dependency引用同一个版本时。
5) Scope:范围,在dependency中,值为test时,jar包只在测试时生效;值为compile时,在编译、测试、打包、部署都会生效;值为provider时,jar包只在编译和测试生效,在打包和部署里面不会生效,也即jar包不会被一起打包。
6) Build:
<build>
<resources>
<resource>
<filtering>true</filtering>
<!--描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/resources</directory>
<!--包含的模式列表 -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 -->
<excludes>
<exclude>jdbc.properties</exclude>
</excludes>
</resource>
</resources>
</build>
默认没有配置resources时,会将src/main/resources目录下的文件拷贝到target/classess目录下,对于src/main/java目录下的非java文件不处理;配置了resources之后,还会选择性的将src/main/java下的非java文件拷贝到target目录下。
reference
[1] https://www.bilibili.com/video/BV1dp4y1Q7Hf?from=search&seid=3024120190965355920