1.Maven的基本介绍
![](https://i-blog.csdnimg.cn/blog_migrate/9a5c081e88a5a855cea68900dc98e42d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/37902afdcd30625d1efb49d108f5eb00.png)
maven把一个项目看成一个对象,而这个对象叫做POM,一个项目就是一个对象,项目的属性和项目的行为分别是什么呢?此时pom就体现了作用,所有的东西在pom中说明。
![](https://i-blog.csdnimg.cn/blog_migrate/bda0b0e22fc44e79e3a01c7286c5f82e.png)
2.Maven中仓库的概念
![](https://i-blog.csdnimg.cn/blog_migrate/a7f2eca56cd9f182690b46d96897a888.png)
![](https://i-blog.csdnimg.cn/blog_migrate/23b541d7ae3f25fefca5dcec446f172c.png)
3.Maven中坐标的概念
![](https://i-blog.csdnimg.cn/blog_migrate/66886937c2ca9c7b8e77c8550f009103.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c142b236f4f234cb3d9c195daecae8f5.png)
坐标示例如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>//这个是范围
</dependency>
4.镜像仓库配置的两种方法
![](https://i-blog.csdnimg.cn/blog_migrate/bb4e1eee917f3253b5ecf5d9e443222d.png)
也可以在POM文件中加入以下字段,同样配置好仓库
![](https://i-blog.csdnimg.cn/blog_migrate/4f91dc8f435647d8d540c5e60a698dc6.png)
5.区别全局与局部setting
![](https://i-blog.csdnimg.cn/blog_migrate/60ac20682a6e3a1d42ee3efeacc3fb26.png)
6.创建一个Maven项目过程
![](https://i-blog.csdnimg.cn/blog_migrate/45110ab0ae271ea41e8183a52d8b279a.png)
创建的时候一定记得要改默认设置文件和本地仓库的地址,一般默认C盘,改到自己确定的位置,否则会报插件加载错误。
![](https://i-blog.csdnimg.cn/blog_migrate/f5289161f943e0a246b7bd735f91bb52.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2f88e50e4da03cde2e40f138329c39a8.png)
7.Maven目录结构
![](https://i-blog.csdnimg.cn/blog_migrate/3705ad965db30bbd8bce6e281be9e346.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e29564fcacb9cb513c349ebbbf8d0709.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd1ed9321611ff55f2e62d2cf1c2b024.png)
8.Maven的依赖管理
![](https://i-blog.csdnimg.cn/blog_migrate/b42927050a87e0d60e93641001c791c9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/161ecd9876fbafde17dc3672e0a7cb71.png)
在本地仓库中下载的文件是根据域名来分文件夹的
![](https://i-blog.csdnimg.cn/blog_migrate/00080079299bafe561f3ab60e4bdfaf6.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0891c62d527392d8c2e91cb6fa463d56.png)
可以通过IDEA看到依赖关系图
![](https://i-blog.csdnimg.cn/blog_migrate/dbdc8b86b9462636b1bd1b8c983d14bc.png)
注意:下载依赖同时也可以一并把源代码,JAVA文档,注解一起下载下来,很方便观看
![](https://i-blog.csdnimg.cn/blog_migrate/cd6464847336d24d772e4f9eb52b9bd2.png)
9.Maven构建生命周期及命令
![](https://i-blog.csdnimg.cn/blog_migrate/9c91446fba22fe4a353d6213efdb903f.png)
①不依赖IDEA环境,通过cmd命令来编译的演示过程如下
![](https://i-blog.csdnimg.cn/blog_migrate/fe403da6cab89c57b57ff0f0c8a90bd1.png)
②打开项目的所在位置
![](https://i-blog.csdnimg.cn/blog_migrate/d524ae2adbfe6db55436b54157fb683b.png)
③进入到项目中并在地址栏输入cmd命令mvn compile
![](https://i-blog.csdnimg.cn/blog_migrate/5044fb31059677f03c1f585ba598de19.png)
④出现报错,原因是没有进行声明字符集
<properties>这是maven的运行说明标签
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
编译过程中对源代码一律以UTF-8的形式读取
</properties>
⑤重新输入编译命令编译文件,编译成功且target文件夹出现,所谓不同周期即为不同的maven命令
![](https://i-blog.csdnimg.cn/blog_migrate/495d98feb3454fc8bcf113d5e3d68024.png)
![](https://i-blog.csdnimg.cn/blog_migrate/50023d401e7fcb9fce33511138266889.png)
⑥输入mvn package命令可以对所有的源代码及相关资源文件进行打包命令,在target下生成jar文件。
![](https://i-blog.csdnimg.cn/blog_migrate/cd336bbc62bdc1a77d5e9a9b03e1edf9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b3f577461241a7f415a2f430ae2173db.png)
⑦打包文件中有如下文件,IDEA的运行编译都是依托于底层的Maven来进行的,
右边就是所有生命周期的命令,如果执行后边的命令会将前边的命令也一并执行。
install命令会将打完的jar包安装到本地仓库,在本地仓库就可以找到打完的jar。
![](https://i-blog.csdnimg.cn/blog_migrate/6b9b778051860ad19e59e2852eaf5250.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5d5810cf61eb715af874fbb3ea53acf4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e7278870e7f925dc4ca4f993b6c8eb51.png)
10.Maven插件技术
![](https://i-blog.csdnimg.cn/blog_migrate/5f7910f1f06974f4cf77ac013a083aa7.png)
实例练习:
①数据库准备
![](https://i-blog.csdnimg.cn/blog_migrate/14cd2d7e7c4df9f716b8fe96041099b3.png)
②导入Mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
![](https://i-blog.csdnimg.cn/blog_migrate/ba3f9eb509d1deaed770c484b501987a.png)
③书写JDBC
public class JdbcSample {
public static void main(String[] args) {
Connection conn = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/imooc?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai", "root", "111111");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from employee");
while(rs.next()){
Integer eno = rs.getInt(1); //eno
String ename = rs.getString("ename");
Float salary = rs.getFloat("salary");
String dname = rs.getString("dname");
System.out.println(dname + "-" + eno + "-" + ename + "-" + salary);
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
if(conn != null && conn.isClosed() == false){
conn.close();
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
④验证结果
![](https://i-blog.csdnimg.cn/blog_migrate/3728eabd9f8461879f0a5d3c379d1128.png)
⑤执行pakage指令,打包生成jar独立运行
![](https://i-blog.csdnimg.cn/blog_migrate/55862ef39eaf81df047043aab20fa6c2.png)
⑥输入cmd尝试运行,发现并不能运行
![](https://i-blog.csdnimg.cn/blog_migrate/a6070a299e6074fd1c1007beb70ce1ec.png)
⑦发现jar压缩包中没有所依赖jar包
![](https://i-blog.csdnimg.cn/blog_migrate/fa383dde16a8d74d8e705693327d0248.png)
⑧在pom中新增标签<build>用来说明maven构建是怎么样的,插件是主要的配置,
插件也需要从国外服务器下载
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.5</version>
</plugin>
</plugins>
</build>
⑨增加插件仓库,加载完插件
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</pluginRepository>
</pluginRepositories>
⑩配置说明入口类
<configuration>
<archive>
<manifest>//设置最终打包完的程序入口
<mainClass>com.imooc.maven.jdbc.JdbcSample</mainClass>
</manifest>
</archive>
<descriptiorRefs>//引用的描述,说明打成Fatjar
//在打包时会将所有引用的jar合并输出到jar文件中
<descriptiorRef>
jar-with-dependencies
</descriptiorRef>
</descriptiorRefs>
</configuration>
11.使用插件,新出现assemble插件(如果下边插件不全则换个版本)会自动编译打包生成Fatjar,用压缩文件打开就可以看的里面把所有的依赖都放进去了
![](https://i-blog.csdnimg.cn/blog_migrate/da72269501ba165d86ebceac1afbd460.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bfe66066faacdcff9d27dacb5b91f402.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f319864a3d2a6242c5afc03e683e7b18.png)
12.控制台运行Fatjar文件,和控制台输出一模一样,因此放在哪此文件都能直接运行。
![](https://i-blog.csdnimg.cn/blog_migrate/5a87e839bf2fa67cc798c8e4dc8b81bc.png)
11.Maven属性管理
![](https://i-blog.csdnimg.cn/blog_migrate/f02c34292eb5af384097a4b696473beb.png)
属性左右了maven管理的一些细节
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 根节点是project用于描述maven工程
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> pom.xml的版本,工程模型版本固定写死不用管
<groupId>org.liu</groupId>
<artifactId>maven-first</artifactId>
<version>1.0-SNAPSHOT</version>
属性主要书写maven主要的设置属性,和对依赖版本的管理
<properties>
语法检查按照jdk1.8进行检查
<maven.compiler.source>8</maven.compiler.source>
编译生成字节码按照jdk1.8级别
<maven.compiler.target>8</maven.compiler.target>
编译和读取源码一律采用UTF-8编码读取,避免中文乱码
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
依赖版本管理举例如下,在此可以集中管理版本
<spring-context.version>6.0.5</spring-context.version>
</properties>
<pluginRepositories>
<pluginRepository>
<id>aliyun</id>
<name>aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
引用方式
<version>${spring-context.version}</version>
直接书写方式
<!--<version>6.0.5</version>-->
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</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.jdbc.JdbcSample</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptiorRef>
jar-with-dependencies
</descriptiorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
</project>
12.Maven总结
![](https://i-blog.csdnimg.cn/blog_migrate/499aadd488a1e3b8645678a2ca0c6a2a.png)