liquibase执行的每一个changeSet都自动打tag
·
liquibase执行的每一个changeSet都自动打tag
liquibase可以回滚,其中一中方式需要打tag,changeSet里面的其它标签和tag是互斥的,需要弄一个单独的changeSet来定义tag,看了liquibase实现里面有一个ChangeExecListener可以实现这个功能
<changeSet id="TAG#184711-tb_user-20241128-001" author="pengzhikang">
<tagDatabase tag="TAG#184711-tb_user-20241128-001"/>
</changeSet>
1、引入依赖
<dependency>
<groupId>org.thghh.dynamic.liquibase</groupId>
<artifactId>dynamic-liquibase-spring-boot-starter</artifactId>
<version>4.30.0-1</version>
</dependency>
2、代码实现
import liquibase.change.core.TagDatabaseChange;
import liquibase.changelog.ChangeSet;
import liquibase.changelog.DatabaseChangeLog;
import liquibase.changelog.visitor.AbstractChangeExecListener;
import liquibase.database.Database;
import org.springframework.stereotype.Component;
/**
* 每一个更改集自动添加tag
*
* @author pengzhikang
* @date 2024/12/3 19:50
* @since 1.0.0
*/
@Component
public class AutoTagChangeExecListener extends AbstractChangeExecListener {
/** 标签前缀 */
public static final String TAG_PREFIX = "TAG-";
@Override
public void willRun(ChangeSet changeSet, DatabaseChangeLog databaseChangeLog, Database database, ChangeSet.RunStatus runStatus) {
if (changeSet != null && changeSet.getChanges().stream().noneMatch(TagDatabaseChange.class::isInstance)) {
TagDatabaseChange tagDatabaseChange = new TagDatabaseChange();
tagDatabaseChange.setTag(TAG_PREFIX + changeSet.getId());
changeSet.addChange(tagDatabaseChange);
}
}
}
更多推荐

所有评论(0)