视频教程:Maven保姆级教程
Maven入门教程(一):安装Maven环境
Maven入门教程(二):idea/Eclipse使用Maven
Maven入门教程(三):Maven语法
Maven入门教程(四):Nexus私服
Maven入门教程(五):自定义脚手架
6.Maven基本用法
6.1 导入jar包
pom.xml是maven的核心配置文件,在pom.xml中可以定义工程的依赖关系,和引用jar包的信息。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
这里引用了junit的jar包,版本是4.12
maven 项目不同的阶段引入到classpath中的依赖是不同的,例如,编译时,maven 会将与编译相关的依赖引入classpath中,测试时,maven会将测试相关的的依赖引入到classpath中,运行时,maven会将与运行相关的依赖引入classpath中。
依赖范围更为通俗的理解,其实就是给依赖包打标记,例如将 A 依赖包标记为“compile”,Maven 就知道 A 依赖包在项目编译的时候要被引入到 classpath 中。
可选配置有
compile:编译
test:测试,只对于测试classpath有效
provided:编译和测试classpath有效,但在运行时无效
runtime:运行时
system:本地,不从库里找
import:功能为将目标pom.xml 文件中元素
<dependencyManagement>
的配置导入合并到当前 pom.xml 文件的元素<dependencyManagement>
中若不指定则默认 compile。
6.2 配置插件
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path>
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
pligins用于定义插件,此处引用了tomcat的插件。path是访问路径,如果我们同时运行多个项目,访问路径都是根路径,可以通过修改port端口号来访问项目。
6.3 maven命令
6.3.1 idea
命令clean tomcat7:run
配置成功后可以在工具栏里看到刚才配置的命令,点击绿色的三角
在浏览器里可以看到:
6.3.2 Eclipse
输入clean tomcat7:run
6.4 查看jar包
6.4.1 idea
通常,在pom.xml中加入
<dependency>
后maven会自动下载jar包在项目的External Libraries中可以看到maven下载的jar:
如果在pom.xml中加入
<dependency>
后,在左侧看不到jar包,可以右键点击pom.xml,选择Maven->Reimport
或者在IDEA右侧点击Maven Project:
jar包没有正确引入的时候,pom.xml中会出现错误提示:
未正确引用的依赖,颜色是不一样的。具体提示的颜色与IntelliJ的主题有关。
6.4.2 Eclipse
6.5 排除jar冲突
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 排除冲突jar包 -->
<exclusions>
<exclusion>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
</exclusion>
</exclusions>
</dependency>
6.6 引用本地jar
<dependency>
<groupId>com.test</groupId> <!--自定义-->
<artifactId>xxxx</artifactId> <!--自定义-->
<version>xxxx-SNAPSHOT</version> <!--自定义-->
<scope>system</scope> <!--需要显式提供依赖的jar以后,Maven就不会在Repository中查找它-->
<systemPath>${project.basedir}/lib/xxx.jar</systemPath> <!--项目根目录下的lib文件夹下-->
</dependency>
7.Maven继承
7.1 pom工程
pom工程中只有一个pom.xml文件,不包含java和resource目录,它只用来保存一些依赖信息。
在pom.xml中添加依赖信息信息,如junit、mysql等,也可以定义插件信息:
<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.maven.test</groupId>
<artifactId>test-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!-- 自定义属性 -->
<properties>
<junit.version>4.12</junit.version>
<mysql.version>5.1.32</mysql.version>
</properties>
<!--继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,而是当子项目声明一个依赖(必须描述group ID和artifact ID信息),如果group ID和artifact ID以外的一些信息没有描述,则通过group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息。-->
<dependencyManagement>
<dependencies>
<!--用于junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<!--产生的构件的文件名,默认值是${artifactId}-${version}。-->
<finalName>${project.artifactId}</finalName>
<!--使用的插件列表 。-->
<plugins>
<!-- 资源文件拷贝插件 -->
<plugin> <!--plugin元素包含描述插件所需要的信息。-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<!--作为DOM对象的配置-->
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置-->
<pluginManagement>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
7.2 创建子工程
在子工程中添加父工程里定义过的依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
可以不用写版本号
<version>
了,它会自动继承父工程里定义的版本。
8.打包
clean 清除编译结果
package 打包
install 安装到本地仓库