整体介绍

◆介绍Maven的核心特性 ◆掌握Maven的依赖管理 ◆掌握Maven的打包方式

Maven介绍

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

不同编译器有自己的web结构标准,如何互相转换导入?使用maven

Maven核心特性

项目设置遵循统一的规则,保证不同开发环境的兼容性 强大的依赖管理,项目依赖组件自动下载、自动更新

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

Maven的安装与配置

Maven – Download Apache Maven 压缩包解压到任意目录 bin:可执行文件夹 boot:引导文件夹 conf:配置文件夹 lib:相关依赖包文件夹 在bin文件夹下有mvn.cmd

D:\JDK\apache-maven-3.8.6\bin添加到环境变量 在JAVA领域版本规则:如1.1.2,最后一位代表小版本,比如修复bug,某些次要功能的升级扩展,中间部分是主要功能有了升级扩展,第一位代表版本有了革命性变换,产生产品迭代,RELEASE代表生厂商给用户可使用的最终版,SNAPSHOT代表快照,表示版本还不够成熟,还有ALPHA代表内测版本,BETA代表公测版本

src下有main目录和test目录,main代表用户编写,而test表示用户测试java文件用的,发布时test文件不发布 pom.xml是核心配置文件 运行后产生target目录,第一个classes是编译后的字节码文件。而第二个文件是源代码文件,程序运行时是字节码文件夹里的文件,而且也会把main里resources文件夹下的文件运行到字节码文件下,运行前的文件进行分类使用,运行后的文件统一到字节码文件夹下统一管理

Maven依赖管理

◆Maven利用dependency(依赖)自动下载、管理第三方Jar ◆在pom.ml文件中配置项目依赖的第三方组件 ◆maven自动将依赖从中央仓库下载至本地仓库,并在工程中引用

Maven的依赖坐标系

◆Groupld:机构或者团体的英文,采用”逆向域名”形式书写 ◆Artifactid:项目名称说明其用途,例如:cms、oa ◆Version:版本号,一般采用”版本+单词”形式,例如:1.0.0.RELEASE

如何知道项目名称? Maven Central Repository Search 根据上面的以来坐标系按照格式添加后,需要刷新重新加载项目 Maven中央仓库在国外,国内与国外通信不畅,导致notfound,需要添加阿里镜像 仓库服务 (aliyun.com)

<!--阿里云Maven镜像-->
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </repository>
    </repositories>

Maven本地仓库与中央仓库

在本地仓库查找,如果没有就前往中央仓库下载到本地仓库 可以在idea中自定义本地仓库位置

引入一个依赖,可能会下载下来多个依赖,因为下载的这个依赖可能需要其它依赖组件 右键点击图查看依赖,即可看到依赖关系

在本地仓库以.pom为后缀的文件中,用编辑器打开,也可通过xml语法格式查看到依赖的其它组件

在外部库中可以点击击相应的jar包依赖查看代码,但是是反编译后的,不宜阅读,可以点击右上角download source查看 也可以自己下载源代码注解等查看

仓库中生成javadoc与source文件

Maven构建生命周期

在Maven项目的资源管理器中,在地址栏输入cmd.exe,输入mvn+上表命令,即可对应相应功能 输入 mvn compiled 如果出现编码GBK不可映射的字符,需要在pom.xml的<properties>的标签中添加

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

观察idea项目文件出现target文件夹,可以得出结论idea运行Maven项目的底层原理还是这些mvn的命令 点击右侧栏上的Maven,可以看到相应的生命周期间的命令。点击这些命令和在cmd运行也一样

clean命令是清除target输出目录,还有执行后面命令的时候会将前面的命令一并执行,比如点击compile命令,前面的clean和validate会依次执行

install命令是将前面的打包(package)安装在本地

Maven插件技术

◆Maven插件为构建项目提供了功能扩展的能力 ◆maven-assembly-plugin是Maven打包插件,用于构建FatJar ◆FatJar是指将所有依赖包装为独立可运行的FatJa

我们开发的项目需要依赖大量的第三方Jar包,不利于维护项目 FatJar技术将所有第三方依赖以及字节码文件打包成一个可运行Jar包文件 用于脱离开发环境进行独立运行

连接mysql的jar包—mysql co nnector java 使用package打包的jar无法独立运行,在cmd运行java -jar jar包名,报错无法运行,所以需要使用FatJar技术

在pom.xml新增build标签:

<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>
                        <!-- all in one , 在打包时会将所有引用的jar合并到输出的jar文件中 -->
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果下载失败,添加阿里云镜像:

<pluginRepositories>
        <pluginRepository>
            <id>aliyun</id>
            <name>aliyun</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </pluginRepository>
    </pluginRepositories>

在Java文件中,不知道哪一个java类是入口类,所以还要在pom.xml中设置入口类 添加<configuration>标签 然后添加FatJar,使用<descriptorRefs>标签 最后在右侧栏的Maven中找到项目,点击插件,进行运行

在浏览器解压FatJar包,看到依赖的jar包都已经解压然后和项目一起整合成一个大的Jar包 cmd运行成功:

Maven属性管理

第一行表示按照UTF-8读取java文件,第二行代表按照JDK 1.8的语法检查代码,第三行表示采用JDK 1.8编译字节码文件

属性里还可以添加依赖管理,免得依赖太多,难以管理

<pinyin4j.version>2.5.1</pinyin4j.version><spring.version>5.2.5.RELEASE</spring.version><mysql.jdbc.version>8.0.23</mysql.jdbc.version>

下面的<dependencies>标签里的依赖配置使用${}方式引用

<version>${pinyin4j.version}</version>

如果需要更改版本号,只需要在这里集中管理更改即可