在依赖关系正确的情况下,执行 mvn install 提示找不到软件包
项目中的generator
模块依赖user
模块,依赖关系配置正确,但是执行mvn install
提示找不到相应的软件包。
generator
的pom.xml
配置如下所示
<!-- user 模块 -->
<dependency><groupId>com.xxx</groupId><artifactId>user</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope>
</dependency>
项目的根 pom.xml
依赖关系如下所示
<modules><module>common</module><module>user</module><module>gateway</module><module>generator</module></modules>
依赖关系配置正确,但是在执行mvn install
时就是报找不到 user
模块中的某个枚举类。使用 trae 检测后,找到了问题:
检查
user
模块的pom.xml
文件,确认其打包配置是否正确,以确保编译后的类文件被正确包含在JAR
中:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>
修改
user
模块的pom.xml
文件,为spring-boot-maven-plugin
添加classifier
配置,确保生成可被依赖的普通JAR包:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><classifier>exec</classifier></configuration></plugin></plugins>
</build>
执行mvn clean install
,发现一切正常。
之前的问题是由于 Spring Boot Maven 插件默认生成的可执行JAR
包结构特殊,导致其他模块无法正常依赖其中的类。通过在 pom.xml
中添加<classifier>exec</classifier>
配置,让插件同时生成两种JAR
包:
- 带
exec
分类器的可执行JAR
(用于运行应用) - 不带分类器的普通
JAR
(用于其他模块依赖)
这样 generator
就能正确引用 user
中的 枚举类,从而解决编译错误。