pom.xml文件
pom.xml文件,是maven项目的核心配置文件,里面是对当前项目的详细描述,例如:
<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>
<!-- 1.公司或者组织域名倒序+项目名 -->
<groupId>com.dancebyte.demo</groupId>
<!-- 2.模块名 -->
<artifactId>mvn-test</artifactId>
<!-- 3.版本 -->
<version>0.0.1-SNAPSHOT</version>
<name>mvn-test</name>
<!-- 配置当前项目中,所依赖的其他maven项目(jar包) -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
groupId,该元素定义当前Maven项目隶属的实际项目
artifactId,该元素定义当前maven项目表示的具体子项目(模块)
version,该元素定义当前maven项目的具体版本
说明,在该文件中:
1、先定义了当前maven项目自己的三个坐标值
2、又声明了当前maven项目所依赖的另一个maven项目(junit)的三个坐标值
3、 标签表示依赖的意思
4、是可选的标签,用来指定这个依赖的作用范围,默认值为compile。
(1)compile,默认值,适用于所有阶段(开发、测试、部署、运行),jar包会一直存在所有阶段。
(2) provided,只在开发、测试阶段使用,目的是不让将来部署的容器和你本地仓库的jar包冲突,因为有些jar包在将来部署的服务器或者容器中是存在的,所以打包的就不需要把这些jar添加进来了,如servlet相关jar包。
(3) runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
(4) test,只在测试时使用,用于编译和运行测试代码。不会随项目发布,如JUnit相关jar包。
(5)system,类似provided,需要显式提供包含依赖的jar的路径,Maven不会在Repository中查找它。
在pom.xml文件中的 标签里面,可以定义变量,然后在下面的配置中,去使用这个变量,如
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.alibaba.invoke</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<!-- 这三个变量,是让maven默认自带的插件使用的 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- 指定hello项目的版本(变量) -->
<hello.version>0.0.1-SNAPSHOT</hello.version>
</properties>
<dependencies>
<dependency>
<groupId>com.briup.demo</groupId>
<artifactId>hello</artifactId>
<!-- 使用上面定义的变量:${hello.version}就是0.0.1-SNAPSHOT-->
<version>${hello.version}</version>
</dependency>
</dependencies>
</project>
用变量表示版本号或者项目名字可以省下很多记版本号或者项目名等的功夫
坐标
简介
在maven中,每一个项目都有三个坐标(GAV),用来唯一标识这个项目。
groupId:该元素定义当前maven项目隶属的实际项目
artifactId:该元素定义当前maven项目表示的具体子项目(模块)
version:该元素定义当前maven项目的具体版本
例如:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
假设这个maven项目的jar,在仓库中的位置是:F:\repository\junit\junit\4.13\junit-4.13.jar,可以看到坐标在仓库中对应的就是文件夹。
Maven结构
在Maven中,要求一个maven项目必须是固定的目录结构,如下
分析:
project,项目的主目录,目录名表示项目名(必须)
src/main/java/,存放项目中源代码的目录(必须)
src/main/resources,存放项目中资源文件的目录(必须)
src/test/java/,存放测试代码的目录(可选)
src/test/resources/,存放测试代码资源文件的目录(可选)
pom.xml,maven项目的配置文件,里面是对maven项目信息的详细描述(必须)