@MaximIs

Как перенести настройки liquibase блока, расположенного в build.gradle в отдельный (самописный) плагин?

Всем доброго времени.

В ряде проектов у меня имеется блок 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);
    }
}
  • Вопрос задан
  • 25 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект