1.Maven的基本介绍
maven把一个项目看成一个对象,而这个对象叫做POM,一个项目就是一个对象,项目的属性和项目的行为分别是什么呢?此时pom就体现了作用,所有的东西在pom中说明。
2.Maven中仓库的概念
3.Maven中坐标的概念
坐标示例如下:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>//这个是范围
</dependency>
4.镜像仓库配置的两种方法
也可以在POM文件中加入以下字段,同样配置好仓库
5.区别全局与局部setting
6.创建一个Maven项目过程
创建的时候一定记得要改默认设置文件和本地仓库的地址,一般默认C盘,改到自己确定的位置,否则会报插件加载错误。
7.Maven目录结构
8.Maven的依赖管理
在本地仓库中下载的文件是根据域名来分文件夹的
可以通过IDEA看到依赖关系图
注意:下载依赖同时也可以一并把源代码,JAVA文档,注解一起下载下来,很方便观看
9.Maven构建生命周期及命令
①不依赖IDEA环境,通过cmd命令来编译的演示过程如下
②打开项目的所在位置
③进入到项目中并在地址栏输入cmd命令mvn compile
④出现报错,原因是没有进行声明字符集
<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命令
⑥输入mvn package命令可以对所有的源代码及相关资源文件进行打包命令,在target下生成jar文件。
⑦打包文件中有如下文件,IDEA的运行编译都是依托于底层的Maven来进行的,
右边就是所有生命周期的命令,如果执行后边的命令会将前边的命令也一并执行。
install命令会将打完的jar包安装到本地仓库,在本地仓库就可以找到打完的jar。
10.Maven插件技术
实例练习:
①数据库准备
②导入Mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
③书写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();
}
}
}
}
④验证结果
⑤执行pakage指令,打包生成jar独立运行
⑥输入cmd尝试运行,发现并不能运行
⑦发现jar压缩包中没有所依赖jar包
⑧在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,用压缩文件打开就可以看的里面把所有的依赖都放进去了
12.控制台运行Fatjar文件,和控制台输出一模一样,因此放在哪此文件都能直接运行。
11.Maven属性管理
属性左右了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>