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

3591

被折叠的 条评论
为什么被折叠?



