繁体   English   中英

使用Spring Boot Maven项目作为依赖项

[英]Using a Spring boot maven project as a dependency

这似乎是一个微不足道的问题,但是我花了几个小时试图解决这个问题,所以我很乐意为正在发生的事情提供任何帮助和见解。

我在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类之一中完成@Configuration ,则可以使用@Profile("flyway")注释该配置。 这样,如果项目需要运行Flyway迁移,则可以激活配置文件。 否则,Flyway不会被激活。

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

@EnableAutoConfiguration(exclude = { FlywayConfiguration.class })

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM