Maven入门教程(三):Maven语法

视频教程:Maven保姆级教程
Maven入门教程(一):安装Maven环境
Maven入门教程(二):idea/Eclipse使用Maven
Maven入门教程(三):Maven语法
Maven入门教程(四):Nexus私服
Maven入门教程(五):自定义脚手架

6.Maven基本用法

6.1 导入jar包

pom.xml是maven的核心配置文件,在pom.xml中可以定义工程的依赖关系,和引用jar包的信息。

xml 复制代码
<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 配置插件

xml 复制代码
<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冲突

xml 复制代码
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<!-- 排除冲突jar包 -->
	<exclusions>
		<exclusion>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-core</artifactId>
		</exclusion>
	</exclusions>
</dependency>

6.6 引用本地jar

xml 复制代码
<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等,也可以定义插件信息:

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 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 创建子工程

在子工程中添加父工程里定义过的依赖:

xml 复制代码
<dependencies>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
	</dependency>
</dependencies>

可以不用写版本号<version>了,它会自动继承父工程里定义的版本。

8.打包

clean 清除编译结果

package 打包

install 安装到本地仓库

相关推荐
蓑 羽2 分钟前
力扣438 找到字符串中所有字母异位词 Java版本
java·算法·leetcode
Reese_Cool10 分钟前
【C语言二级考试】循环结构设计
android·java·c语言·开发语言
严文文-Chris34 分钟前
【设计模式-享元】
android·java·设计模式
Flying_Fish_roe1 小时前
浏览器的内存回收机制&监控内存泄漏
java·前端·ecmascript·es6
c#上位机1 小时前
C#事件的用法
java·javascript·c#
【D'accumulation】2 小时前
典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式
java·设计模式·mvc
试行2 小时前
Android实现自定义下拉列表绑定数据
android·java
茜茜西西CeCe2 小时前
移动技术开发:简单计算器界面
java·gitee·安卓·android-studio·移动技术开发·原生安卓开发
救救孩子把2 小时前
Java基础之IO流
java·开发语言