Java 使用Spring boot maven项目作为依赖项

Java 使用Spring boot maven项目作为依赖项,java,maven,spring-boot,flyway,Java,Maven,Spring Boot,Flyway,这似乎是一个微不足道的问题,但我已经花了几个小时试图解决这个问题,所以我很高兴能得到任何帮助和对正在发生的事情的见解 我在Eclipse中有两个Spring boot maven项目。让我们把它们称为ProjectA和ProjectB。我需要在ProjectB中使用ProjectA中的一个类(POJO)。这意味着ProjectA是ProjectB的依赖项 我将此依赖项放在ProjectB的pom.xml中: <dependency> <groupId&g

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

我在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>
ProjectA包含一个带有一些迁移脚本的Flyway,这些脚本以某种方式在ProjectB中执行(即使ProjectB不包含任何Flyway内容)

当运行maven compile时,我得到以下异常(它搜索中央repo而不是本地repo):


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

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

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

但是,有两种方法可以让它正常工作

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

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

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


我肯定还有一些选择,但我认为这是你最好的选择。

我还认为,把我需要的POJO放在那里是一个选择,但仅仅为了让一门课可用,听起来需要做很多工作。如果Spring Boot生成了一个包含所有依赖项的“胖”jar,那么如果您导入它,您将获得项目中的所有类及其所有依赖项。最后,我选择了“新项目”方法,并使用公共模型类创建公共空间。谢谢你的回答请告诉我flyway配置类应该是什么样子?我在pom.xml中添加了依赖项,然后用我的sql文件创建了db.mirgation文件夹。当我运行这个项目时,我得到了这个错误:调用init方法失败;嵌套异常为org.flywaydb.core.api.FlywayException:无法扫描位置:classpath:db/migration中的SQL迁移
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
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)
@EnableAutoConfiguration(exclude = { FlywayConfiguration.class })