Я использую Jooq с Mysql в своем приложении. Наш конвейер выпуска следует за dev -> stage -> prod .
Все env имеют одинаковую схему, но проблема в том, что они могут иметь следующие переменные:
В настоящее время я получил следующий код.
public static void init() {
Target l_target = new Target();
System.out.println("My directory is::"+l_target.getPackageName());
l_target.setDirectory("src/main/java");
l_target.setPackageName("com.my.paas.css.entity");
Configuration configuration = new Configuration()
.withJdbc(new Jdbc()
.withDriver("com.mysql.jdbc.Driver")
.withUrl("jdbc:mysql://localhost:3306/paas")
.withUser("root"))
.withGenerator(new Generator()
.withDatabase(new Database()
.withName("org.jooq.meta.mysql.MySQLDatabase")
.withIncludes(".*")
.withExcludes("")
.withInputSchema("paas"))
.withTarget(l_target));
try {
GenerationTool.generate(configuration);
} catch (Exception ex) {
System.out.println();
ex.printStackTrace();
}
}
Я хочу понять, как я могу сделать генерацию кода адаптируемой к среде?






Вы уже используете конфигурацию программной генерации кода, поэтому адаптация элементов конфигурации должна быть тривиальной. Например, чтобы выбрать правильный URL-адрес JDBC для данного подключения к базе данных, вы будете использовать локальную переменную или метод вместо жесткого кодирования URL-адреса:
// Instead of
.withUrl("jdbc:mysql://localhost:3306/paas")
// write...
.withUrl(jdbcUrl())
И реализовать jdbcUrl() в зависимости от окружения.
Еще один набор функций, который вы, возможно, захотите изучить, — это функция отображения схемы, которую вы можете применить:
Обратите внимание, что нет ничего необычного в том, чтобы возвращать сгенерированный код и создавать из него библиотеку, а не повторно генерировать код в каждой среде.
@SandeepPandey: Не могли бы вы задать новый вопрос? Ваш новый вопрос на самом деле не связан с этим.
Как мы можем генерировать во время генерации кода? У нас есть работа Дженкинса для процесса сборки. У нас нет доступа к БД с сервера Jenkins (где на самом деле происходит генерация кода)?