Всем доброго времени.
В ряде проектов у меня имеется блок liquibase в build.gradle, похожий на этот:
liquibase {
activities {
main {
driver "org.postgresql.Driver"
url project.ext.url
username project.ext.username
password project.ext.password
defaultSchemaName project.ext.defaultSchemaName
changelogFile project.ext.changelogFile
}
}
}
Мне необходимо вынести этот блок и настроить его в отдельном плагине, далее подключить его ко всем проектом, отказавшись от блока liquibase.
Пока реализовал такое...но не уверен, что иду в нужном направлении. Информации по данному вопросу практически нет(
public class LiquibaseConfigPlugin implements Plugin<Project> {
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
public void apply(Project project) {
log.info("Start Liquibase Plugin Configuration");
configurePlugins(project);
configureExtension(project);
log.info("End Liquibase Plugin Configuration");
}
private void configurePlugins(Project project) {
project.getPluginManager().apply(LiquibasePlugin.class);
}
private void configureExtension(Project project) {
var activity = new Activity("main");
var parameters = new HashMap<>() {
{
put("url", "jdbc:postgresql://localhost:5432/db");
put("username", "test");
put("password", "test");
put("schema", "test");
put("changelog", "changelog-master.xml");
}
};
activity.setParameters(parameters);
var extension = project.getExtensions().findByType(LiquibaseExtension.class);
var activities = extension.getActivities();
activities.register("main", (Action) activity);
}
}