跳至主要內容

Maven

Yang大约 3 分钟

项目管理工具,对软件项目提供构建与依赖管理

  • Apache 下的 Java 开源项目
  • 为 Java 项目提供了统一的项目管理方式,已成为业界标准

特性

  • 项目设置遵循统一的规则,保证不同开发环境的兼容性

  • 强大的依赖管理,项目依赖组件自动下载、自动更新

  • 可扩展的插件机制,使用简单,功能丰富

坐标

GroupId

机构或者团体的英文,采用 “逆向域名” 形式书写,例如:com.imooc

ArtifactId

项目名称,说明其用途,例如:cms、oa 等

Version

版本号,一般采用 “版本 + 单词” 形式,例如:1.0.0.RELEASE

项目结构

- BaseDir:根目录
	- pox.xml:项目(Project)对象(Object)模型(Model)文件
	- target:项目输出目录,用于存储 jar/war 文件
		- classes:字节码(.class)的编译输出目录
	- src
		- main
			- java:Java源代码目录
			- resource:资源目录,保存配置文件、静态图片等
		- test
			- java:测试类的源代码
			- resource:测试时需要使用的资源文件

依赖管理

利用 dependency(依赖) 自动下载、管理第三方 jar

  • pox.xml 文件中配置项目以来的第三方组件
  • maven 自动将以来从远程仓库下载至本地仓库,并在工程中引用
<dependencies>
  <dependency>
  	<groupId>mysql</groupId>
    <artifactld>mysql-connector-java</artifactld>
    <version>5.1.47</version>
  </dependency>
</dependencies>

仓库

本地仓库

存储在电脑本地目录中的文件

中央仓库

存储在 Apache 远程服务器上的文件

私服

备份服务器

<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.imooc</groupId>
	<artifactId>maven-first</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<repositories>
		<repository>
			<!-- 创建私服地址 -->
			<id>aliyun</id>
			<name>aliyun</name>
			<url>https://maven.aliyun.com/repository/public</url>
		</repository>
	</repositories>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.47</version>
		</dependency>
	</dependencies>
</project>

项目打包

Maven 项目打包是通过 Plugins(插件)技术实现的

  • 输出 jar 包插件:maven-assembly-plugin
  • 输出 war 包插件:maven-war-plugin
<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.imooc</groupId>
	<artifactId>maven-first</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<repositories>
		<repository>
			<!-- 创建私服地址 -->
			<id>aliyun</id>
			<name>aliyun</name>
			<url>https://maven.aliyun.com/repository/public</url>
		</repository>
	</repositories>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.47</version>
		</dependency>
		<dependency>
			<groupId>com.belerweb</groupId>
			<artifactId>pinyin4j</artifactId>
			<version>2.5.1</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.1.0.RELEASE</version>
		</dependency>
	</dependencies>
	<build>
		<!-- 配置插件 -->
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.5.5</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>com.imooc.maven.PinyinTestor</mainClass>
						</manifest>
					</archive>
					<descriptorRefs>
						<!-- all in one , 在打包时会将所有引用的jar合并到输出的jar文件中 -->
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
<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.imooc</groupId>
	<artifactId>maven</artifactId>
	<version>1.0.0.RELEASE</version>
	<!-- 输出格式 jar/war , 默认为 jar -->
	<packaging>war</packaging>
	<repositories>
		<repository>
			<!-- 创建私服地址 -->
			<id>aliyun</id>
			<name>aliyun</name>
			<url>https://maven.aliyun.com/repository/public</url>
		</repository>
	</repositories>
	<dependencies>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>maven-web</finalName>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>3.2.2</version>
			</plugin>
		</plugins>
	</build>
</project>

常用命令

命令用途
mvn archetype:generate创建 Maven 工程结构
mvn compile编译源代码
mvn test执行测试用例
mvn clean清除产生的项目
mvn package项目打包
mvn install安装至本地仓库
上次编辑于:
贡献者: sunzhenyang