在没有 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>
我目前正在将 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>