Maven简介与使用

Maven的介绍

Maven的简介

  • Maven是项目管理工具,对软件项目提供构建与依赖管理
  • Maven是Apache下的Java开源项目
  • Maven为Java项目提供了统一的管理方式,已成业界标准

Maven的特性

  • 项目设置遵循统一的规则,保证不同开发环境的兼容性
  • 强大的依赖管理,项目依赖组件自动下载,自动更新
  • 可扩展的插件机制,使用简单,功能丰富

Maven的安装与配置

官网:https://maven.apache.org/

Maven的项目标准结构

IDEA创建Maven项目
Create New Project => 左侧项目类型选择“Maven” => Next

Maven的坐标

  • GroupId:机构或团体的英文,采用”逆向域名“的方式书写,比如”com.song”
  • ArtifactId:项目名称,说明其用途,例如:cms,oa…
  • Version:版本号,一般采用“版本号+单词”的形式,例如:1.0.0.RELEASE

Maven项目标准结构
image.png

Maven依赖管理

  • Maven利用dependency(依赖)自动下载,管理第三方jar
  • 在pom.xml文件中配置项目依赖的第三方组件
  • Maven自动将依赖从远程仓库下载至本地仓库,并在工程中引用
  1. 登录远程仓库的检索网站:https://search.maven.org/
  2. 输入要检索的依赖包,比如 mysql java,然后点击搜索

image.png

  1. 一般来说搜索结果的第一栏就是我们想要的结果,点击版本号查看最新版

image.png

  1. 复制”Apache Maven“中的内容到pom.xml中即可

如果一个依赖里面还存在子依赖,那么Maven会把所有的依赖一次性全部下载

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.song</groupId>
  7. <artifactId>idea-maven</artifactId>
  8. <version>1.0.0-release</version>
  9. <!-- ↓↓↓ 添加的内容 ↓↓↓ -->
  10. <dependencies>
  11. <dependency>
  12. <groupId>mysql</groupId>
  13. <artifactId>mysql-connector-java</artifactId>
  14. <version>5.1.47</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.belerweb</groupId>
  18. <artifactId>pinyin4j</artifactId>
  19. <version>2.5.1</version>
  20. </dependency>
  21. </dependencies>
  22. <!-- ↑↑↑ 添加的内容 ↑↑↑ -->
  23. </project>

问题及对策:解决error:java:不支持发行版本5

本地仓库与中央仓库

  1. maven在项目启动的时候会对pom.xml进行加载,分析里面有哪些依赖
  2. 在本地仓库中查找这些依赖是否存在(通常就是指jar包)
  3. 如果有依赖在本地仓库中不存在,那么maven会自动去中央仓库下载该依赖
  4. 下载到本地仓库之后,maven再去加载该依赖

image.png

补充1:查看本地仓库
/Users/chenyisong/.m2/repository
#普通依赖包一般放在com/belerweb

补充2:阿里云maven私有仓库服务
如果我们每次都需要去apach官网提供的中央仓库中下载依赖包,那么有可能速度是很慢的。怎么办呢?我们可以使用阿里云提供的maven私有仓库服务

image.png

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.song</groupId>
  7. <artifactId>idea-maven</artifactId>
  8. <version>1.0.0-release</version>
  9. <!-- ↓↓↓ 添加的内容 ↓↓↓ -->
  10. <repositories>
  11. <repository>
  12. <!-- 创建私服的地址 -->
  13. <id>aliyun</id>
  14. <name>aliyun</name>
  15. <url>https://maven.aliyun.com/repository/public</url>
  16. </repository>
  17. </repositories>
  18. <!-- ↑↑↑ 添加的内容 ↑↑↑ -->
  19. <dependencies>
  20. <dependency>
  21. <groupId>mysql</groupId>
  22. <artifactId>mysql-connector-java</artifactId>
  23. <version>5.1.47</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>com.belerweb</groupId>
  27. <artifactId>pinyin4j</artifactId>
  28. <version>2.5.1</version>
  29. </dependency>
  30. </dependencies>
  31. </project>

项目打包

  • Maven可将Java项目打包为jar,war包
  • Maven项目打包是通过Plugins(插件)技术实现
  • Maven输出Jar包插件:maven-assembly-plugin

Maven常用命令

image.png

idea中已经集成了这些命令
image.png

问题及对策:InteliJ IDEA生成可执行jar运行提示没有主清单属性