Использование классов из /target

128
29 марта 2022, 21:10

Я использую JOOQ. JOOQ генерирует метаклассы, которые потом используются для генерации запросов в базу. Окей. Рекомендуется генерировать классы в /target/generated-sources/jooq... Сгенерировал. Но когда я пытаюсь вызвать этот класс в коде, IDEA не видит эти классы.

Подскажите, как мне быть?

Answer 1

Нужно выделить метаклассы в отдельную библиотеку. В одном модуле maven классы генерируются, в других модулях этот модуль проставляется как зависимость и используются сгенерированные метаклассы.

При таком подходе модель базы автоматически отделяется от бизнес-логики.

Рекомендуется генерировать классы в /target/generated-sources/jooq

Это так, но в документации есть раздел (Code generation and version control) в котором вопрос генерации освещается подробнее. Разделяются два общих подхода:

  1. Генерированный код является частью кода приложения.

    Метаклассы генерируются в исходном коде (src/main/java), хранятся в системе контроля версий. Генерация проводится, как правило, вручную, а не при сборке, т.к. возможны изменения.

    Преимущества:

    • Генерация отделена от сборки. Для сборки проекта не нужна БД.
    • Метаклассы не зависят от БД. Это может быть удобно если схема БД изменяется внешними силами (например, другими разработчиками).
    • Изменения схемы БД явно хранятся в системе контроля версий.

    Недостатки:

    • Метаклассы могут расходиться с базой данных.
  2. Генерированный код является частью производных артефактов.

    Метаклассы генерируются в процессе сборки автоматически (target/generated), не хранятся в системе контроля версий.

    Преимущества:

    • Модель данных всегда соответствует БД.
    • Метаклассы не занимают место в исходном коде.

    Недостатки:

    • Сборка зависит от базы данных.

Как правило используют второй подход, чтобы избежать разночтений между БД и Java-кодом, но при необходимости можно использовать как первый подход, так и некое промежуточное решение.

В любом случае метаклассы лучше хранить отдельно.

READ ALSO
Как запустить java + selenium + cucumber на windows-сервере

Как запустить java + selenium + cucumber на windows-сервере

Я меня есть windows-сервер, на котором через консоль должны запускаться автотесты (Java, Cucumber, Selenium), которые написаны в IntelliJ IDEA (+maven) на mac osСейчас...

132
Где должен быть родительский файл pom.xml

Где должен быть родительский файл pom.xml

Создал проект с 2 модулями и хотел сделать родительский pom чтобы не писать все дважды, не знаю где должен быть родительский помЗаранее спасибо

69
Конструкторы Java (Модификатор доступа)

Конструкторы Java (Модификатор доступа)

Я еще совсем зеленый в JavaВопрос: какой модификатор доступа имеет конструктор класса, если не указать его

143
Работа с ViewModel или перенос Бизнес-логики из активити

Работа с ViewModel или перенос Бизнес-логики из активити

Я начал переносить бизнес-логику из активити во viewModel, но остановился на одном местеМне нужно перенести этот участок:

178