首页 > 解决方案 > 找不到符号 - Spring Boot Maven 兄弟作为依赖

问题描述

使用 Maven spring boot 插件重新打包没有帮助。

  1. 尝试清理 .m2 文件夹。
  2. 从 sts 和命令行构建项目。
  3. 添加了组件扫描器以扫描实体,但在 maven 构建本身时失败。
  4. 添加了 Spring Boot Maven 插件以重新打包为可执行 jar 选项,似乎没有任何帮助。

父 pom 包含 spring boot starter

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
  </parent>

以及以下模块

<modules>
    <module>client-data</module>
    <module>eureka-server</module>
    <module>eureka-client-service-1</module>
    <module>eureka-client-service-2</module> 
 </modules>

eureka-client-service-1eureka-client-service-2具有client-data依赖性。

由于client-data是一个spring-boot具有包类型的项目jar,因此添加了以下代码以uber jar在客户端数据中创建一个pom.xml

     <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                        <configuration>
                            <classifier>exec</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

仍然在执行mvn clean install -amd -e 以下错误

Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project eureka-client-service-1: Compilation failure: Compilation failure:
[ERROR] /C:/Users/balaji/trashcan/pcf-eureka-show-case/eureka-client-service-1/src/main/java/org/balaji/java/jee/pcf/eureka/client/service_1/boundary/EurekaClientEmployeesServiceEndpoint.java:[16,65] package org.balaji.java.jee.pcf.eureka.client.data.controller does not exist
[ERROR] /C:/Users/balaji/trashcan/pcf-eureka-show-case/eureka-client-service-1/src/main/java/org/balaji/java/jee/pcf/eureka/client/service_1/boundary/EurekaClientEmployeesServiceEndpoint.java:[17,61] package org.balaji.java.jee.pcf.eureka.client.data.entity does not exist
[ERROR] /C:/Users/balaji/trashcan/pcf-eureka-show-case/eureka-client-service-1/src/main/java/org/balaji/java/jee/pcf/eureka/client/service_1/boundary/EurekaClientEmployeesServiceEndpoint.java:[27,5] cannot find symbol
[ERROR] symbol:   class OrganizationDataFixtureAdapter
[ERROR] location: class org.balaji.java.jee.pcf.eureka.client.service_1.boundary.EurekaClientEmployeesServiceEndpoint
[ERROR] /C:/Users/balaji/trashcan/pcf-eureka-show-case/eureka-client-service-1/src/main/java/org/balaji/java/jee/pcf/eureka/client/service_1/boundary/EurekaClientEmployeesServiceEndpoint.java:[42,32] cannot find symbol
[ERROR] symbol:   class Employee
[ERROR] location: class org.balaji.java.jee.pcf.eureka.client.service_1.boundary.EurekaClientEmployeesServiceEndpoint

标签: javamavenspring-boot

解决方案


对于“有什么方法可以在不更改项目结构的情况下删除 spring-boot 行为”的问题。

=> 您可以覆盖子 pom 文件中的 spring-boot-maven-plugin 行为。

参考这里:如何在另一个项目中向 Spring Boot Jar 添加依赖项?

Spring Boot 1.x

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.20.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin>

Spring Boot 2.x 如果您使用的是 spring-boot-starter-parent,则 repackage 目标会在 id 为 repackage 的执行中自动执行。在该设置中,仅应指定配置,如下例所示:

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <id>repackage</id>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...
  </plugin> 

推荐阅读