Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
maven的概念模型
maven主要有依赖管理和构建两部分
依赖管理负责配置项目所依赖的jar包,使得项目不需要手动添加很多包,节省了项目占用的空间。
构建负责配置项目的运行环境,maven命令对应的插件(可以省略)
在pom.xml配置文件中有项目本身的信息、所依赖的jar包信息、项目运行的环境(jdk版本、tomcat版本等)
一. 依赖管理
<dependencies>
<groupId>cn.itls</groupId>
<artifactId>[the artifact id of the block to be mounted]</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>test</scope>
</dependencies>
groupId:组织的名称
artifactId:项目名称
version:版本号
scope:依赖范围
依赖范围:
-
compile:编译范围,指 A 在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
-
provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,比如:servlet api 被 tomcat 容器提供。
-
runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
-
test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以 test范围依赖不会被打包。
-
system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
- 默认引入 的 jar 包 ------- compile 【默认范围 可以不写】(编译、测试、运行 都有效 )
- servlet-api 、jsp-api ------- provided (编译、测试 有效, 运行时无效 防止和 tomcat 下 jar 冲突) jdbc 驱动 jar 包 ---- runtime (测试、运行 有效 )
- junit ----- test (测试有效)
- 依赖范围由强到弱的顺序是:compile>provided>runtime>test
构建
设置jdk版本
设置jdk版本可以在maven的setting.xml配置文件中设置,也可以在当前项目中设置。
- 在setting.xml文件中配置 (maven安装目录的conf/setting.xml文件)
这个文件中本来就有<profile>
标签
<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>
- 在当前项目中配置
打开pom.xml文件,添加以下配置信息
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
设置tomcat插件版本
maven自身集成有tomcat插件,所以可以自由设置
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8080</port>
<path>/</path>
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
path:访问的路径
port:端口号
uriEncoding:URL按UTF-8进行编码,解决了中文参数乱码
maven具有如下命令
- mvn一键构建命令:
mvn tomcat:run:用maven集成的tomcat插件来运行的 (tomcat插件其实有tomcat基本功能)
常用maven命令 - mvn clean:清理
- mvn compile:编译主程序
- //mvn test-compile:编译测试程序
- mvn test:执行测试
- mvn package:打包
- mvn install:安装
- mvn deploy:发布