Maven

  • 时间:
  • 来源:互联网
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41385229/article/details/103272604

什么是Maven

maven是一个项目管理、依赖管理、项目构建打包工具。

项目管理

Maven 采用了约定优先配置的原则,项目的目录结构统一,不同的开发者在开发一个 Maven 项目的时候,文件存放位置几乎没有差别,省去了很多不必要的麻烦,有利于促进项目团队的标准化。如下图所示,

目录 目的
src/main/java 存放Java源代码
src/main/resources 存放项目的资源文件
src/test/java 存放测试类
src/test/resources 存放测试用的资源
src/main/webapp 存放 Web 前端文件
target 项目打包后的输出目录
target/classes 项目编译后输出目录
pom.xml 管理文件

项目结构

其中,main下主要放自己编写的源文件,test下主要放测试文件,一般通过JUnit进行测试。

依赖管理

传统的添加依赖方式为将jar包添加到项目的lib下,然后add to build,但是需要从网上寻找所需要的各种jar包,不容易找而且版本可能不全。
Maven提供了仓库的概念,把各种依赖放进仓库中,项目需要的话直接从仓库中取。仓库分为本地仓库-私服-中央仓库,本地仓库就是本地电脑上的,私服一般使用阿里云的,中央仓库则是官方提供的。仓库里的jar包特别全,版本也特别全,只要能想到就都能找到。本地仓库如果没有项目所需的则会一级一级向上找,找到后会同步到本地仓库。
项目需要的依赖可以在pom.xml文件中添加。

pom文件结构
<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.cmower</groupId>
	<artifactId>test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>test</name>
	
	<properties>
		<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
	</properties>
	
	<dependencies>
		...
	</dependencies>

	<build>
	...
	</build>
	
</project>
  • <project> 是 pom.xml 的根元素,声明了相关的命名空间。
  • <modelVersion> 指定了当前项目对象模型(POM)的版本,对于 Maven 3.x 来说,该值只能是 4.0.0。
  • <groupId> 定义了项目的组名,这个组往往和项目所在的组织或公司关联。
  • <artifactId> 定义了当前 Maven 项目在组中唯一的 ID。
  • <version> 定义了项目的版本号,SNAPSHOT 为快照的意思,也就是说该项目还处于开发阶段。
  • <packaging> 定义了项目的打包类型,可选值有 war、jar 等。
  • <name> 定义了项目的名称。
  • <properties>通常来配置一些变量信息
  • <dependencies>用于添加依赖
  • <build>包含了执行 Maven 构建周期目标所需的插件以及相关的配置
依赖项配置
<dependencies>
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
	</dependency>
	
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>3.8.1</version>
		<scope>test</scope>
	</dependency>
	
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>5.1.5</version>
		<exclusions>
			<exclusion>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
</dependencies>

<groupId>、 <artifactId>、 <version> 合起来可以准确地定位一个依赖项。<exclusions> 主要用于排除依赖,无需指定版本。<scope>用来控制依赖的范围。

构建配置
<build>
	<finalName>test</finalName>
	<plugins>	
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
		</plugin>	
	</plugins>
	
	<resources>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>...</include>
			</includes>
		</resource>
	</resources>
</build>
  • <finalName>,打成 jar 包或者 war 包时的名称。
  • <plugins> 用于指定项目在构建过程中使用的插件。
    • <groupId>、<artifactId>、<version> 用于确定使用的插件。
    • <configuration>:该插件所需要的特殊配置。Maven 3 默认使用的是 JDK 1.5,本例中我们使用了 JDK 1.8。
  • <resources> 描述了各个资源在 Maven 项目中的具体路径。
    • <directory>,资源文件的路径,默认位于/src/main/resources/ 目录下。
    • <includes>,用于指定在构建过程中被处理的资源文件;对应 <excludes> 用于省去不被处理的资源文件。
      05、使用 Maven 对项目进行清理、编译、测试、打包

项目构建打包

几条命令

本文链接http://element-ui.cn/news/show-265.aspx