gpt4 book ai didi

java - 使用 Spring boot maven 项目作为依赖项

转载 作者:行者123 更新时间:2023-11-30 07:46:03 25 4
gpt4 key购买 nike

这似乎是一个微不足道的问题,但我花了几个小时试图解决这个问题,因此我很高兴获得任何帮助和对正在发生的事情的见解。

我在 Eclipse 中有两个 Spring-boot maven 项目。我们将它们称为ProjectAProjectB。我需要在 ProjectB 中使用 ProjectA 中的一个类 (POJO)。这意味着 ProjectA 是 ProjectB 的依赖项。

我将此依赖项放入 ProjectB 的 pom.xml 中:

    <dependency>
<groupId>cz.my.project</groupId>
<artifactId>ProjectA</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

在 Eclipse 中,一切看起来都很好,但是当我使用 ProjectB 启动 Tomcat 时,我遇到了各种异常(取决于我为此依赖项设置的范围)。

对于我尝试从 ProjectA 使用的类,我要么得到 ClassNotFound 异常,要么得到以下错误:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.api.FlywayException: Unable to scan for SQL migrations in location: classpath:db/migration

ProjectA 包含一个 Flyway,其中包含一些迁移脚本,这些脚本以某种方式在 ProjectB 中执行(即使 ProjectB 不包含任何 Flyway 内容)。

运行 maven 编译时,出现以下异常(它搜索中央存储库而不是本地存储库):

Could not resolve dependencies for project cz.ProjectA.MyPOJO-service:war:0.0.1: Could not find artifact cz.ProjectA:jar:0.0.1 in central (http://repo.maven.apache.org/maven2)

谁能帮我解决这个问题吗?我尝试了各种各样的事情:手动将projectA放在类路径上,在ProjectA上运行maven install,将这两个项目放在同一个工作集中等等。到目前为止没有任何效果。

最佳答案

如果您以这种方式导入 Spring Boot 项目,您将导入所有 @Configuration 类,Spring Boot 将扫描其中的所有内容,以便自动连接它.

解决此问题的最佳方法是创建一个单独的项目,其中包含两个项目都使用的类并将其导入。

但是,您可以通过几种方法来实现此目的。

首先,虽然我不确定 Flyway 是如何配置的,但如果它是在您的一个 @Configuration 类中完成的,那么您可以使用 @Profile( “飞行路线”)。这样,如果项目需要 Flyway 迁移来运行,那么它可以激活配置文件。否则,Flyway 不会被激活。

其次,如果自动配置不在您的项目中(如许多 Spring Boot Starter 依赖项中一样),那么您可以通过将其放入您的项目中来排除任何 @Configuration 类自动连线 Flyway Spring Boot 应用程序类(嗯......任何 @Configuration 真的):

@EnableAutoConfiguration(exclude = { FlywayConfiguration.class })

...其中 FlywayConfiguration.class 是执行 Autowiring 的类,无论是在您的项目中还是在导入的第三方库中。我有时使用它来禁用测试的安全自动配置。

我确信还有更多选择,但我认为这些是您最好的选择。

关于java - 使用 Spring boot maven 项目作为依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33952902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com