Настройка общего уровня персистентности (репозитории, доменные модели и т. Д.) В рамках многомодульного проекта Gradle.Возможно ли это?
Я настраиваю многомодульный проект Gradle в Котлине, по сути, с тремя подпроектами;(1) REST API, (2) прослушиватель событий и (3) базовая библиотека с общей функциональностью для двух других.
1 уже существует ранее, и в качестве первого шага я обернул его какподпроект в многомодульной сборке, и начал перемещать общие вещи в 3 (2 будет построено позже).
В рамках этого мне также нужно настроить постоянный слой для проекта.Первоначально я установил его в существующем модуле API, который работает нормально (все еще отсутствуют некоторые гигиенические факторы, такие как пролетные пути и т. Д., Но базовая настройка есть).
Однако при перемещении изменений в базовую библиотеку я получаюследующие сообщения об ошибках при использовании любого из репозиториев:
io.micronaut.context.exceptions.ConfigurationException: No backing RepositoryOperations configured for repository. Check your configuration and try again
Обзор установки (не уверен, насколько это актуально .. рады предоставить более подробную информацию!):
- kotlin 1.3.41, jvm8
- gradle 5.1.1 (с использованием нескольких модулей)
- micronaut
- microronaut-data + hibernate + jpa + jdbc + postgres
Зависимости в core / build.gradle (перенесено из api / build.gradle)
kapt "io.micronaut:micronaut-inject-java:1.2.2"
kapt 'io.micronaut.data:micronaut-data-processor:1.0.0.M1'
compile 'io.micronaut.data:micronaut-data-hibernate-jpa:1.0.0.M1'
compile "io.micronaut.configuration:micronaut-jdbc-hikari:1.2.0"
runtime 'com.h2database:h2:1.4.199'
runtime 'org.postgresql:postgresql:42.2.8'
runtime "io.micronaut.configuration:micronaut-jdbc-hikari:1.2.0"
// I have tried different combinations of compile/runtime/etc.
api / src / main / resources / application.yml config
datasources:
default:
url: jdbc:postgresql://host:port/dbname
driverClassName: org.postgresql.Driver
username: ***
password: ***
schema-generate: CREATE_DROP # for test
dialect: org.hibernate.dialect.PostgreSQL95Dialect
jpa:
default:
entity-scan:
packages:
- 'app.core.domain'
- 'app.core.repository'
properties:
hibernate:
hbm2ddl:
auto: update
show_sql: true
InВ сочетании с вышесказанным я также использую несколько плагинов:
// plugin for making annotated kotlin data classes open - needed by hibernate
id 'org.jetbrains.kotlin.plugin.allopen' version '1.3.41'
// jpa plugin
id 'org.jetbrains.kotlin.plugin.jpa' version '1.3.41'
// give default empty constructors to kotlin data classes - needed by hibernate
id 'org.jetbrains.kotlin.plugin.noarg' version '1.3.41'
Я попытался, например, аннотировать мой класс приложения API ниже, когда я читал что-то в документации Micronaut о проблемах, если классы не скомпилированыс Micronaut (который не является основной библиотекой't)
@Introspected(
packages=["app.common.repository", "app.common.domain"],
includedAnnotations=[
javax.persistence.Entity::class,
javax.persistence.MappedSuperclass::class,
javax.persistence.Embeddable::class,
io.micronaut.data.annotation.Repository::class
]
)
Я пробовал несколько других вещей в течение дня и, честно говоря, не могу вспомнить их все прямо сейчас.
Ожидаемый результат - в основном то, что я уже имел, когда материал персистентного слоя был в модуле API, я просто хочу переместить его.
Любая помощь или идеи с благодарностью!:) Заранее спасибо!