注册 X
提交 注:点击提交后系统会发送邮件到邮箱验证!(仅支持中国大陆邮箱)
我已阅读并同意 服务条款
首页 > IT技术笔记 > 查看笔记

SpringBoot项目打jar包供别的项目调用问题

假如有两个项目A和B,假如A项目想打成jar包,然后在B中引入该jar包。

1、SpringBoot的Maven插件打包

如果用Idea创建的SpringBoot会自带maven打包插件。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

表1.1、引入SpringBoot会自带maven打包插件

然后点击idea左边的Maven Project->你的项目名->Lifecycle->instal就会把这个项目放入你本地的Maven库,如图1.1。而且还会在你的项目下生成一个jar包,如图1.2。

图1.1、打包过程

图1.2、生成的jar包

SpringBoot会自带打包插件打的包不能用。将SpringBoot会自带打包插件打的包解压后会看到它的目录结构,它把包都达到BOOT-INF这个目录下了,引用的时候我们引用不到,会报“Cannot resolve symbol”的错,如图1.3。

图1.3、报的错

2、原生的Maven插件打包

SpringBoot会自带打包插件打的包不能用,不能用我改为用原生的Maven打包插件打包。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source> <!--指明源码用的Jdk版本-->
                <target>${java.version}</target> <!--指明打包后的Jdk版本-->
            </configuration>
        </plugin>
    </plugins>
</build>

表2.1、引入原生maven打包插件

然后点击idea左边的Maven Project->你的项目名->Lifecycle->instal就会把这个项目放入你本地的Maven库,而且还会在你的项目下生成一个jar包,如图2.1。

图2.1、打包过程

图2.2、生成的jar包

这种方式打完包并安到本地仓库后可以通过两种方式引用该jar包。

1、通过你打包项目的坐标然后在调用的项目中引用能够引用的到。

A项目的坐标

<groupId>com.bonc</groupId>
<artifactId>mcp-activiti-invoke</artifactId>
<version>0.0.1-SNAPSHOT</version>

表2.2、打包项目坐标

B项目中引用

<dependency>
    <groupId>com.bonc</groupId>
    <artifactId>mcp-activiti-invoke</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

表2.3、引入打包到本地库中jar的坐标


2、我们直接把jar包放在本地,然后通过maven引入本地jar包能够引用到。但是这种方式有个问题,那就是打包那个项目的依赖不会打入jar包。这种方式如果想用,还得在项目中已入依赖,这种方式是不行的。


引用方法:在项目下创建个文件夹(一般都会命名为lib,这个可以随意定),然后把jar包放在该文件加下,如图2.3。最后在pom文件中已入该jar包,如表2.1。

图2.3、jar放的位置

<dependency>
    <groupId>com.bonc</groupId>
    <artifactId>mcp-activiti-invoke</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/mcp-activiti-invoke-0.0.1-SNAPSHOT.jar</systemPath>
</dependency>

表2.4、引入本地jar

这种打包方式用第一种引用可以,用第二种不行。如果B项目想用A项目打的包,我只需要把A的包引入就可以,不需要考虑A的依赖。为了解决这个问题,我又找到了第三种方式。



 打赏        分享



评论

邮箱: 昵称: