视频教程: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 安装到本地仓库