尝试配置我的项目以将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依赖性和配置的插件。
如何配置?
答案 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,而是在子项目上运行构建。