jar 包
jar包的区别
SpringBoot 默认打成的jar都是可执行的jar包,这个jar包中会包含起引入的全部依赖jar。
特征
- 拥有BOOT-INF文件,这样的可执行jar是无法被其他项目进行pom依赖使用的。
- 可执行jar的大小远远大于不可执行jar
不可执行的jar
可执行的jar
IDEA中生成自定义jar包
方式一
构建项目
jar包配置
构建jar包
方式二(推荐)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<!-- 后缀名:拥有该后缀名的为可执行jar文件 -->
<classifier>exec</classifier>
<!-- 项目启动类 -->
<mainClass>com.cn.codesrevised.CodesRevisedApplication</mainClass>
<!-- 是否跳过插件的执行:此处可以简单的理解为是否生成可执行jar文件 -->
<!-- <skip>true</skip>-->
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<!-- 再次打包:将不可可执行jar包重新打包成可执行jar包 -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
SpringBoot 中引入自定义jar
方式一
resources目录下新建lib文件夹,设置lib文件夹为resource属性,然后将需要的本地jar包放入进去
pom文件中引入依赖
注:groupid 和artifactid 和version都是自己补充的 ,可以随便写,推荐和jar包保持一致
<dependency>
<groupId>com.xy.async</groupId>
<artifactId>fc-async</artifactId>
<version>2.0.4-SNAPSHOT</version>
<scope>system</scope> // 有一个缺陷:JAR包内部的依赖不会自动传递给当前项目,即需要手动在你的项目中引入这些依赖
<systemPath>${project.basedir}/lib/fc-async-2.0.4-SNAPSHOT.jar</systemPath>
</dependency>
至此,项目就可以正常运行了,如果项目还需要进行打包,则还需要添加如下配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 在打包时将引用的外部jar引入到当前项目包中 -->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
方式二 (推荐)
将jar包发布到本地maven仓库
mvn dependency:list -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version>
// 示例
mvn install:install-file -Dfile=C:\Users\fkjas\Desktop\jobRelated\IDEA\subassembly\lib\fc-async-2.0.4-SNAPSHOT.jar -DgroupId=com.xy.async -DartifactId=fc-async -Dversion=2.0.4-SNAPSHOT -Dpackaging=jar
注:maven中的package命令和install命令
- package命令:完成项目编译、单元测试、打包功能,但打包文件未部署到本地Maven仓库和远程Maven仓库
- install命令:完成项目编译、单元测试、打包功能,同时把打包文件部署到本地Maven仓库,但未部署到远程Maven仓库
- 两者最大的区别就是install会将打包文件部署到本地仓库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了