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会将打包文件部署到本地仓库

浙公网安备 33010602011771号