今天这个视频我将带着你搞清楚
什么是JAR包,为什么要打JAR包
以及配置好MAVEN并用Maven打包你的第一个springboot应用
这依然是保姆级教程,建议点赞收藏后再观看,以后需要的时候随时翻出来
JAR 包是什么?为什么要打 JAR 包?
在开始之前,首先我得让你明什么是JAR包,为什么要打JAR包
一个大型的JAVA项目通常不仅会包含多个CLASS文件,
还可能包括配置文件(如 MANIFEST.MF)、资源文件(如图片、配置文件)以及其它众多的依赖库。
如果不将他们打成一个包,而采用手动复制来发布你的软件,
那么很容易导至某个文件文件被遗漏,并且散乱的文件结构也会导至难以维护
于是便有了打包工具
在最早时候,开发都是利用JDK提供的JAR打包工具手动打包,这种方式在小型项目中还勉强凑合
一但遇到大型项目,工作量陡增,并且也很容易出错
于是后来就有了Ant打包工具,Ant打包工具基于 XML 配置文件build.xml
相比JAR大大提升了便利性,但是它没有依赖管理功能,需要开发者手动处理依赖
再后来就有了Maven, Gradle这样的一站式自动打包工具,大大提升了JAVA程序员的便利性
事实上不管是以上谈到的哪个打包工具,它们打出来的JAR包其实就是一个ZIP格式的压缩文件
只不过是使用了 .jar做为文件的扩展名。
不信,你可以用压缩打开一个JAR包,里边的内容清晰可见
你甚至可以用解压缩工具把JAR包解压缩,然后做一些修改,再用压缩工具打包成ZIP文件,
再把扩展名修改成JAR仍然可以运行
IDEA 中配置并使用 Maven(无需额外下载)
接下来我教你配置好JAVA的构建工具MAVEN,然后使用它来打包一个JAVA项目
如果你在此之前,你看过其它人的MAVEN配置教程,
他们通常告诉你说:
到MAVEN官网下载并安装MAVEN
然后再到IDEA中配置好MAVEN
而且他们还会说:你要把MAVEN安装到一个没有空格的目录下
其实这些都是多此一举,事实上IDEA自带就带有MAVEN
而且只要你安装的不是太老的IDEA,那么MAVEN的版本也是很新。
在IDEA开发环境中使用自带的MAVEN是没有任何问题的
当然,如果你需要在命令行下手动使用MAVEN的功能,这时候会提示不能识别MAVEN程序
只是因为默认IDEA并没有把MAVEN添加到PATH目录
找到IDEA的安装目录,打开PLUGIN目录,再打开MAVEN目录
再打开LIB,再打开MAVEN3,这里就是自带的MAVEN程序所在目录了
只需要把这个BIN目录复制,添加到系统的PATH环境变量,你就可以正确在命令行下使用MAVEN工具了

加速依赖下载:配置阿里云镜像
为了让构建依赖的时候更快速可靠,我们最好配置一下Idea的下载源
打开你的用户目录下的.m2目录下的settings.xml文件,如果不存在这个文件你可以新建一个
然后我们把阿里云的镜像仓库添加到配置文件中,配置文件中会指定源镜像的ID,名称以及URL地址等
创建 Spring Boot 项目并编写简单代码
接下来我们创建一个新的JAVA项目,编译系统这里,我们指定为MAVEN
之后IDEA会为我们创建一个JAVA项目
我们对代码稍作修改,这里我用springboot写了一个简单的HTTP REST 控制器来做为演示
我对这几行代码做个讲解
package org.example是包声明,表明这个类属于 org.example 包 而这一堆import用于导入相关的依赖 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication 是一个组合注解,是 Spring Boot 应用程序的核心注解之一。它的主要作用是启用 Spring Boot 的自动配置和组件扫描 @RestController声明该类是一个 REST 控制器,表示这个程序会处理 HTTP 请求并返回响应 public static void main(String[] args) 是程序的入口点 SpringApplication.run(Main.class, args)用于启动 Spring Boot 应用 @GetMapping("/") 这里用于将 HTTP GET 请求映射到这个方法, 在方法中会打印输出Hello, Spring Boot!作为 HTTP 响应内容
第一次打包:遇到的问题及解决
好现在我们点击右侧这个Maven标签按扭
先执行Clean,然后再执行Package打包。
可以看到maven在target目录下已经为我们打包好了一个jar包
但我们发现它的大小才3KB,似乎有些不正常,我们到命令行下运行它
提示没有manifest配置
这是因为JAR 包的 MANIFEST.MF 文件中缺少 mainClasss 属性,导致 Java 无法识别应用程序的入口点。
我们需要修改一下pom.xml文件,这里我写好了一段配置
我们一起来看看
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.2</version> <configuration> <archive> <manifest> <mainClass>org.example.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build>
build指明这是项目的构建信息
plugins包含构建过程所使用的插件列表
plugin定义了一个 Maven 插件
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version>
是插件的核心内容,groupId指定插件所属的组织
artifactId:指定插件的名称
version:指定插件的版本号
在configuration中的manifest下的mainClass,指定包含程序入口点的类
这样就可以了
我们再重新打包先CLEAN一下项目,再点PACKAGE打包。
可以看到现在的JAR包大小仍然是3KB,大小上看还是不正常,我们运行一下看看
提示找不到spring framework相关的依赖
很明显是因为没有把依赖包打到JAR包中
引入 Spring Boot Maven 插件,打出可执行胖 JAR
我们再修改POM.XML文件
在plugins后边我再添加一个新的Plugin插件
这里我们将springboot maven插件打包进来
它提供了运行以及打包 Spring Boot 应用的功能。
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
然后我们再执行打包,同样先CLEAN一下项目,再点PACKAGE打包。
现在我们看到这个JAR包有18M大小,看起来正常了。我们再运行一下它
很好,我们正常运行了第一个springboot应用,
现在我们在浏览器中访问这个应用,成功输出hello springboot
恭喜你,你用maven打包了第一个springboot应用


