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会将打包文件部署到本地仓库
posted @   先娶国王后取经  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示