Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Flyway db首先迁移,用于从属Jar-Spring引导_Java_Spring Boot_Maven_Flyway_Spring Boot Maven Plugin - Fatal编程技术网

Java Flyway db首先迁移,用于从属Jar-Spring引导

Java Flyway db首先迁移,用于从属Jar-Spring引导,java,spring-boot,maven,flyway,spring-boot-maven-plugin,Java,Spring Boot,Maven,Flyway,Spring Boot Maven Plugin,我有一个SpringBootBase项目,构建为一个jar。这个jarbase-0.0.1-SNAPSHOT.jar文件在db/migration/*.sql 此base-0.0.1-SNAPSHOT.jar作为依赖项添加到impl-0.0.1-SNAPSHOT-boot.jar中。同样,这个impl引导jar正在db/migration/*.sql中进行flyway迁移 基本jar的flyway迁移创建表,impl引导jar更改由基本jar创建的相同表 在这个场景中,我需要先运行base-ja

我有一个SpringBootBase项目,构建为一个jar。这个jar
base-0.0.1-SNAPSHOT.jar
文件在
db/migration/*.sql

base-0.0.1-SNAPSHOT.jar
作为依赖项添加到
impl-0.0.1-SNAPSHOT-boot.jar
中。同样,这个impl引导jar正在
db/migration/*.sql
中进行flyway迁移

基本jar的flyway迁移创建表,impl引导jar更改由基本jar创建的相同表

在这个场景中,我需要先运行base-jar的flyway脚本,然后再运行impl-boot-jar

基本jar中的迁移脚本

db/migration/v1_uuucreate.sql,
db/migration/v2\u create.sql

impl jar中的迁移脚本

db/migration/v3__create.sql

当impl-jar的
mvn clean安装时,我遇到了这个错误

org.springframework.beans.factory.BeanCreationException:错误 创建在类路径中定义了名为“flywayInitializer”的bean 资源 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: 调用init方法失败;嵌套异常是 org.flywaydb.core.internal.command.DbMigrate$FlywayMigrateException: 迁移V3\uuu create.sql失败 -------------------------------SQL状态:42S02错误代码:42102 消息:未找到表“基本表”;SQL语句:

我已经在基本jar包中添加了迁移脚本,但仍然没有执行基本jar的flyway脚本

在impl引导jar的mvn构建过程中,如何首先执行基本包flyway脚本,然后执行impl引导jar的下一个脚本

更新1:

下面的插件将基本jar打包为另一个spring boot应用程序的一部分


org.apache.maven.plugins
maven jar插件
罐子
包裹
通用域名格式
**/实体/*
**/服务/*
${basedir}/src/main/resources/db/migration/*
impl jar的pom.xml

com.group
基本0.0.1-SNAPSHOT
通用域名格式
在这两个POM中,没有提到与flyway迁移配置相关的内容。默认情况下,它使用默认的flyway配置。

我假设“基本”项目jar工件本身不是spring boot应用程序,我的意思是它不是用spring boot maven插件创建的,因为如果不是这样,它就不能作为依赖项包含在
impl boot
模块中(因为spring启动应用程序不是一个真正的jar,所以它不工作)

基于这一假设,flyway扫描您的JAR和“classes”文件夹,并纯粹在运行时查找迁移。这意味着从base和impl迁移之间应该有任何区别,只要它们位于预定义位置的类路径中。 如果找不到base的迁移,那么可能会出现以下情况(在我看来,我可能遗漏了一些东西,但希望它能为调查提供一些方向):

  • 如果基本jar没有正确打包,请在Winrar/Winzip中打开工件,并确保迁移确实符合所需的布局
  • jar未正确打包到spring boot应用程序中。应用程序中的依赖jar通常位于
    boot-INF/lib
    文件夹中,因此请确保它确实出现在那里
  • Flyway迁移位置混乱。Spring boot可以在
    应用程序.properties
    /
    应用程序.yml
    中包含各种Flyway定义,请参阅,特别是属性
    Spring.Flyway.locations
  • 也许数据库的模式是混乱的,一般来说flyway迁移不应该包含模式名称,但这通常取决于许多其他因素,所以我只是作为一个一般方向来提到它
  • 最后但并非最不重要的一点,您可以在实际执行迁移的代码中放置一个断点:查看并查看通过调试解决了哪些迁移

  • 您是否配置了maven插件来执行迁移?是否可以添加这些配置?在“impl”的pom中是否也有任何相关配置模块?请将所有这些信息添加到问题中。我还假设,基本jar本身不是spring boot工件,这意味着它不使用spring boot maven插件,对吗?@MarkBramnik请检查问题的更新为什么flyway在maven clean安装期间运行?是否有spring boot测试?@MarkBramnik它在安装期间尝试运行测试。但即使我在测试阶段禁用,在运行过程中,它也会因相同的错误而中断,所以前几天我必须完全这样做,所以我不会发布答案,而是将链接发布到帮助我的答案。我解压后发现基站没有打包迁移。然后我给出了正确的路径,它成功了。!
           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <executions>
                  <execution>
                      <goals>
                          <goal>jar</goal>
                      </goals>
                      <phase>package</phase>
                      <configuration>
                          <classifier>com</classifier>
                          <includes>
                              <include>**/entities/*</include>
                              <include>**/services/*</include>
                          
    <include>${basedir}/src/main/resources/db/migration/*</include>
                          </includes>
                      </configuration>
                  </execution>
              </executions>           </plugin>
    
      <dependency>            <groupId>com.group</groupId>
          <artifactId>base</artifactId>           <version>0.0.1-SNAPSHOT</version>
          <classifier>com</classifier>        </dependency>