代码之家  ›  专栏  ›  技术社区  ›  jfneis

无法使用父POM运行Liquibase Maven插件

  •  0
  • jfneis  · 技术社区  · 7 年前

    父POM配置:

        <dependencies>  
            <dependency>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>${liquibase-plugin.version}</version>
            </dependency>
        </dependencies>
        <build>
            <pluginManagement>
                    <plugin>
                        <groupId>org.liquibase</groupId>
                        <artifactId>liquibase-maven-plugin</artifactId>
                        <version>${liquibase-plugin.version}</version>
                        <configuration>
                     <propertyFileWillOverride>true</propertyFileWillOverride>
    <propertyFile>src/main/resources/db/liquibase.properties</propertyFile>
                        </configuration>                    
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    

    在儿童项目中,我有(除其他外):

    <build>
                <plugin>
                    <groupId>org.liquibase</groupId>
                    <artifactId>liquibase-maven-plugin</artifactId>
                    <configuration>
                        <propertyFile>src/main/resources/db/liquibase.properties</propertyFile>
                    </configuration>
                </plugin>
    </build>
    

    然后我试着跑 mvn liquibase:generateChangeLog

    [ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.4.1:generateChangeLog (default-cli) on project credisfera-middleware-parent: Failed to resolve the properties file. -> [Help 1]
    

    看起来maven或插件正在试图解析父目录中的属性文件,这不应该发生。如果我从父POM中删除property file,则会出现另一个错误,说明未指定属性文件。

    编辑1:我的项目结构

    Parent POM
      -- project1 POM
      -- project2 POM
    

    如何配置?

    1 回复  |  直到 7 年前
        1
  •  0
  •   jfneis    7 年前

    我想我知道发生了什么。

    当我命令mvn liquibase:whatever时,maven知道它将在当前POM中运行这个命令。这解释了为什么liquibase插件抱怨无法解析属性文件(因为super POM没有)。

    我找到的解决方案是运行mvn liquibase:whatever使用Eclipse并标记“解析工作区工件”选项。在这种情况下,Eclipse不会尝试在任何其他项目中运行mvn liquibase,而是在我运行构建的子项目上运行。