在没有 parent 部分的情况下启动 spring 引导项目

Start a spring boot project witout the parent part


我目前正在将 appache CXF 项目迁移到 Spring BOOT

我的问题是这个项目依赖于另外两个项目,为了将它们导入 Maven,我需要像这样声明 parent 项目:

<parent>
   <groupId>com.comapny.dd</groupId>
   <artifactId>ProjectMainJars_Parent</artifactId>
   <version>${version}</version>
 </parent>

但是为了使用Spring开机。我需要这样声明 parent:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0</version>
</parent>

我添加了以下代码:

 <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.4.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

我仍然收到以下错误:

Exception in thread "main" java.lang.AbstractMethodError: org.springframework.boot.env.EnvironmentPostProcessorApplicationListener.supportsSourceType(Ljava/lang/Class;)Z
    at org.springframework.context.event.GenericApplicationListenerAdapter.supportsSourceType(GenericApplicationListenerAdapter.java:81)
    at org.springframework.context.event.AbstractApplicationEventMulticaster.supportsEvent(AbstractApplicationEventMulticaster.java:294)
    at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:224)
    at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:195)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:133)

是否可以使用 spring 引导而无需更改 parent。
PS:我只需要创建一个REST服务。

提前致谢。

如果您必须将其他一些工件指定为父级,则 spring 引导需要移动到 dependencyManagement 标签下,与依赖项平行,如下所示:

  <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.4.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <dependencies>
  </dependencies>

我知道可能会迟到,但我想出了办法:
首先确保从任何 Spring 依赖项中清除父目录,然后在子项目中指定以下内容:

 <dependencyManagement>
    <dependencies>

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.4.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

    </dependencies>
  </dependencyManagement>

  <dependencies>
  </dependencies>