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

时间:2018-08-15 22:17:22

标签: maven maven-plugin liquibase

尝试配置我的项目以将Liquibase与父POM一起使用。

父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中删除propertyFile,则会收到另一个错误消息,提示未指定属性文件。

编辑1:我的项目结构

Parent POM
  -- project1 POM
  -- project2 POM

我想在project2 POM上运行Liquibase,该项目也具有liquibase依赖性和配置的插件。

如何配置?

1 个答案:

答案 0 :(得分:0)

我想我知道发生了什么事。

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

问题是我不能直接在子项目上运行maven,因为它依赖于父POM中列出的另一个项目。如果--also-make和--projects的Maven选项不会再次引入相同的问题,则它们会有所帮助:maven尝试在父POM上运行liquibase。

我发现的解决方案是运行mvn liquibase:无论使用Eclipse并标记选项“ Resolve Workspace Artifacts”。在这种情况下,Eclipse不会尝试在任何其他项目中运行mvn liquibase,而是在子项目上运行构建。