【mvn package】module总是打包失败

在dubbo项目中,interface、provider和consumer模块分别扮演不同角色。当尝试打包provider模块时,尽管interface模块已成功打包并安装到仓库,却出现找不到interface服务的错误。问题源于spring-boot-maven-plugin默认生成的jar包无法直接作为依赖。解决方案是为interface模块配置classifier属性,生成可被依赖的jar,打包成功后,provider模块即可正确引用interface服务。

项目场景:

dubbo项目+zookeeper

是dubbo项目,分为interface层(需要注册的接口),provider(接口实现,真实提供服务),consumer(消费接口)。其中需要将interface模块进行打包,然后作为其他两个模块的依赖引入。除了打包interface模块,还要打包provider模块和consumer模块。


问题描述

provider模块打包报错时,interface模块的pom文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.lkz</groupId>
        <artifactId>Springboot</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>dubbo-interface</artifactId>
    <name>dubbo-interface Maven Webapp</name>
    <version>1.0-SNAPSHOT</version>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>dubbo-interface</finalName>

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

此时打包interface没有问题,可以成功,生成dubbo-interface.jar包dubbo-interface.jar.original文件,然后install到仓库里面了,后续通过dubbo+zookeeper执行都没有问题。但是就是想要打包provider模块的时候,就出现了报错,com.lkz.inter.service不存在,但是在对应的模块的依赖中是可以找到interface的jar包,里面有这个service的,但就是找不到。
在这里插入图片描述


原因分析:

提示:这里填写问题的分析:

在springboot默认打出的包是无法被依赖的,可以对spring-boot-maven-plugin插件配置classifier属性,生成两个jar包,一个是可执行的jar,一个是可以被依赖的jar.

interface模块修改之后,可以生成三个文件。
在这里插入图片描述


解决方案:

 <configuration>
       <classifier>exec</classifier>
 </configuration>

修改了被引用模块interface的pom文件,添加了上述部分,然后就打包成功了。修改后为:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.lkz</groupId>
        <artifactId>Springboot</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <artifactId>dubbo-interface</artifactId>
    <name>dubbo-interface Maven Webapp</name>
    <version>1.0-SNAPSHOT</version>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <finalName>dubbo-interface</finalName>

        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

参考:
https://blog.csdn.net/qq_42445433/article/details/125478007
https://blog.csdn.net/yanyanzhenshuai/article/details/136534540

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值