【发布时间】:2023-04-07 05:16:01
【问题描述】:
我有 2 个 Spring Boot maven 项目(模块 A、模块 B)。它们都作为模块添加到父项目中。这两个模块都有一些共同的依赖和java类(域对象),所以我创建了第三个模块Module C,并将所有常见的java文件和依赖都放在那里。
我将模块 C 作为模块之一添加到父 pom。并将模块 C 作为对模块 A 和模块 B 的依赖项添加。在模块 A、B 中,无论模块 C 的类在那里被引用,它都已解决并指向模块 C 类(在 ctrl+click 上)。在 eclipse 中没有显示错误并且更新了 Maven 依赖项。但是当我从 Parent pom 构建项目或单独构建模块 A 时(在构建模块 c 之后),我在引用模块 C 类的地方收到cannot find symbol 错误。
下面是我的 pom.xml 的
父 pom.xml
<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/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.services</groupId>
<artifactId>cloud-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>ModuleC</module> <!-- Project where common dependencies and Common java classes are placed -->
<module>ModuleA</module>
<module>ModuleB</module>
</modules>
</project>
Module C Pom.xml - 通用项目
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example.services</groupId>
<artifactId>cloud-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>ModuleC</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ModuleC</name>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
</project>
Module A Pom.xml - Module C 上的依赖项目
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.example.services</groupId>
<artifactId>cloud-services</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>ModuleA</artifactId>
<dependencies>
<!-- Project where common dependencies and Common java classes are placed -->
<dependency>
<groupId>com.example.services</groupId>
<artifactId>ModuleC</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
模块 B Pom.xml
Same as ModuleA.
我的配置有什么问题。任何帮助深表感谢。谢谢。
【问题讨论】:
-
你试过在ModuleA和B的pom.xml中包含ModuleC的版本吗?
-
是的,它没有用。
-
解压后能查一下jar文件是什么结构吗?如果结构有 BOOT-INF 作为根文件夹,它将不起作用
-
你要我提取哪个罐子?由于构建错误,除了 Common-project 没有构建任何东西。
-
@Santosh,我不确定您是否在询问常见项目 jar。但是,是的,它有 Boot-INF 作为根文件夹。这是我收到构建错误的原因吗?如果不是 Spring-boot 项目,你认为它会起作用吗?
标签: spring spring-boot maven maven-dependency