Maven
大约 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 | 安装至本地仓库 |