Cómo importar clases de dominio de jarra en un proyecto Micronaut?

Sergio:

Tengo un proyecto Micronaut configurado para uso GORM y maravillosa (1). Este proyecto contiene una gran cantidad de clases de dominio que están funcionando perfectamente, la persistencia de los datos en una base de datos MySQL como se esperaba.

Ahora me gustaría hacer esta común clases de dominio a otro proyecto Micronaut (2).

He intentado construir un archivo JAR que contiene sólo el paquete de dominio y su inclusión en el proyecto (2) a través build.gradle. Las clases se compilan y se hacen accesibles en el código, y soy capaz de llamar a los métodos GORM como findBy, createCriteria, etc., es también bueno mencionar que las clases de dominio de todo el proyecto de 2 se anotan con @Entity.

Sin embargo, cuando ejecuto el proyecto (utilizando IntelliJ IDEA) y golpeó a algunos de este código me sale:

Either class [com.project2.domain.Foo] is not a 
domain class or GORM has not been initialized correctly or has already 
been shutdown. Ensure GORM is loaded and configured correctly before 
calling any methods on a GORM entity.

Sé que GORM está bien configurado e inicializado porque he creado una clase de dominio "local" dentro del proyecto 2 y las cosas funcionaron bien.

Antes de hacer esta pregunta vi éste y tal vez pueda traer un poco de inspiración: Importación de clases de dominio de módulo de GORM-independiente en Grails

EDIT 1: actuales build.gradledependencias:

dependencies {
    compile "io.micronaut.configuration:micronaut-kafka"
    compile "io.micronaut.configuration:micronaut-hibernate-validator"

    compile("io.micronaut.configuration:micronaut-hibernate-gorm") {
        exclude group: 'org.grails', module: 'grails-datastore-gorm-hibernate5'
    }
    compile "org.grails:grails-datastore-gorm-hibernate5:6.1.9.RELEASE"

    compile "io.micronaut:micronaut-http-client"
    compile "io.micronaut:micronaut-http-server-netty"
    compile "io.micronaut:micronaut-runtime-groovy"
    compile "io.micronaut:micronaut-validation"
    compileOnly "io.micronaut:micronaut-inject-groovy"
    runtime "ch.qos.logback:logback-classic:1.2.3"

    runtime "org.apache.tomcat:tomcat-jdbc"

    runtime "mysql:mysql-connector-java:6.0.6"

    testCompile "io.micronaut:micronaut-inject-groovy"

    testCompile("org.spockframework:spock-core") {
        exclude group: "org.codehaus.groovy", module: "groovy-all"
    }

    compile files('src/main/resources/libs/my-domain-lib.jar')
}

¡Gracias por adelantado!

inyectar:

Estoy usando una configuración similar.

Tengo un núcleo-lib con GORM-independiente, y un par de verticles (Vert.x) y Grails aplicaciones usando los a través de Gradle compile project()o compile dep:from-artifactory:0.1-SNAPSHOTdirectivas.

Con el fin de hacer posible lo necesario para:

1) Asegúrese de que cada clase de dominio se anota con grails.gorm.annotation.Entity

2) Grails Tweak Application.groovycomo que:

class Application extends GrailsAutoConfiguration {

  @Override
  protected boolean limitScanningToApplication() {
    false
  }

  @Override
  Collection<String> packageNames() {
    super.packageNames() + 'your.domainclass.package'
  }

}

3) Para los proyectos no-Grails necesitaba encontrar e inicializar las clases de dominio a mí mismo, y para cada base de datos que puede ser diferente (el mío es de Mongo-GORM)

ClassPathScanningCandidateComponentProvider compProvider = new ClassPathScanningCandidateComponentProvider( false )
compProvider.addIncludeFilter new AnnotationTypeFilter( Entity )
def domainClasses = compProvider.findCandidateComponents( 'io.my.domain' ).collect{ BeanDefinition bd -> Class.forName bd.beanClassName }
new MongoDatastore( config, *domainClasses )

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=212394&siteId=1
Recomendado
Clasificación