Spring Boot 2.2.0和Maven插件问题

9

我有两个项目。其中一个如下(称为项目1):

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
    <relativePath/> 
</parent>

第二个项目(即项目2)如下:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.BUILD-SNAPSHOT</version>
    <relativePath/> 
</parent>

两者都具备以下特点:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

好的,项目1正常运行。我可以在我的.M2仓库文件夹中看到Spring插件v. 2.0.0.BUILD-SNAPSHOT。

项目2出现以下错误:

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call the method org.springframework.plugin.core.PluginRegistry.getPluginFor(Ljava/lang/Object;Lorg/springframework/plugin/core/Plugin;)Lorg/springframework/plugin/core/Plugin; but it does not exist. Its class, org.springframework.plugin.core.PluginRegistry, is available from the following locations:

    jar:file:/.../.m2/repository/org/springframework/plugin/spring-plugin-core/2.0.0.BUILD-SNAPSHOT/spring-plugin-core-2.0.0.BUILD-SNAPSHOT.jar!/org/springframework/plugin/core/PluginRegistry.class

It was loaded from the following location:

    file:/.../.m2/repository/org/springframework/plugin/spring-plugin-core/2.0.0.BUILD-SNAPSHOT/spring-plugin-core-2.0.0.BUILD-SNAPSHOT.jar


Action:

Correct the classpath of your application so that it contains a single, compatible version of org.springframework.plugin.core.PluginRegistry

当我试图在项目2的POM中强制指定Maven插件版本时,我看到了经典的黄色警告,提示我正在覆盖托管版本2.2.0.BUILD-SNAPSHOT,但是没有Maven插件的2.2.0版本。
奇怪的是,我昨天还能运行这个项目....
有人能告诉我出了什么问题吗?
注意:当我将项目2降级到2.0.3.RELEASE时,所有东西都开始正常工作。

你使用“-SNAPSHOT”版本的原因是什么? - khmarbaise
实际上没有理由。我必须使用v2.1.3吗? - Magno C
1
如果你要尝试一些特殊的东西,我建议使用发布版本而不是“-SNAPSHOT”。因此,我建议使用最新的发布版本,即2.1.3。 - khmarbaise
如果是这样,我必须将其视为冷案。你太棒了! - Magno C
你理解得很清楚,并给了我一个好的答案。我只需要降级一下,就可以完成所有工作了。谢谢你。 - Magno C
显示剩余2条评论
2个回答

7

当我们在项目中使用除Spring Boot提供之外的任何依赖项时,我们需要提供Spring事务核心插件来解决此问题。

请尝试下面的依赖关系,并检查其版本是否与您的Spring Boot版本兼容。

Spring事务核心依赖项:

<dependency>
        <groupId>org.springframework.plugin</groupId>
        <artifactId>spring-plugin-core</artifactId>
        <version>1.2.0.RELEASE</version>
    </dependency>

spring-plugin-core 的任务(功能)是什么?这对我来说不太清楚。你能再解释一下吗?我不想只是复制/粘贴代码片段。@khmarbaise的降级评论实际上解决了问题。 - Magno C
1
你的回答可能是正确的,只是因为有赞成票,我很想接受它,但我还没有实际测试过,因为它已经通过保持版本在发布线上而避免触及快照来解决了。 - Magno C

7
这个问题的解决方案很简单,你只需在依赖部分中删除Spring Boot Data REST Starter即可。这样做后一切都会正常工作,非常完美。谢谢!

1
我无法理解你是如何得出这个结论的,也不知道为什么。 - Magno C
2
如果我真的需要 spring-boot-starter-data-rest,你有什么建议? - Angshuman
这就是罪魁祸首,没有其他的东西,比如Spring Core、Swagger等,只有这个。谢谢。 - vicky
没有依赖项,我无法解析 RepositoryEventHandler 类。 - signonsridhar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接