Gradle многомодульный проект с постоянным уровнем общей базы данных - PullRequest
0 голосов
/ 25 сентября 2019

Настройка общего уровня персистентности (репозитории, доменные модели и т. Д.) В рамках многомодульного проекта 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, я просто хочу переместить его.

Любая помощь или идеи с благодарностью!:) Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...