оптимизация генерации метамодели спящего режима в gradle с использованием hibernate-jpamodelgen

Пакет Hibernate-Jpamodelgen представляет собой обработчик аннотаций/генератор кода, работающий с классами JPA @Entity. Это часто необходимо в приложениях, которые используют запросы JPA Criterion.

Gradle предоставляет режим «добавочной компиляции», но плагины должны быть обновлены для поддержки этого режима. Начиная с версии 5.4.2.Final, JpaModelGen не был обновлен для обеспечения этой поддержки, а это означает, что каждый раз, когда выполняется задача :compile, все исходные файлы в проекте перекомпилируются.

Все наши классы @Entity находятся в одном пакете, на 5 уровней ниже корневого каталога.

Мы ищем способ разделить приложение таким образом, чтобы @Entities правильно сканировались JpaModelGen, но остальная часть приложения по-прежнему могла поддерживать инкрементную компиляцию/сборку.

Окружающая среда:

------------------------------------------------------------
Gradle 5.4
------------------------------------------------------------

Build time:   2019-04-16 02:44:16 UTC

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.1 (Oracle Corporation 11.0.1+13)
OS:           Windows 10 10.0 amd64

файл gradle.build за исключением:

annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:2.1.4.RELEASE"

compileOnly "org.hibernate:hibernate-jpamodelgen:5.4.2.Final"
testCompileOnly "org.hibernate:hibernate-jpamodelgen:5.4.2.Final"

gradle --info classes выходной отрывок:

Full recompilation is required because org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor is not incremental. 

update: мы становимся все более пессимистичными в отношении того, что такое разделение будет успешным для нашего приложения, поскольку сущности ссылаются на объекты вне нашего пакета модели, поэтому их нельзя скомпилировать, а код нельзя сгенерировать без доступа к остальным классам приложения.

в конечном итоге решение, по-видимому, обновляет генератор модели jpa для поддержки инкрементного режима gradle.


person sdw    schedule 03.05.2019    source источник
comment
Проблема со спящим режимом: hibernate.atlassian.net/browse/HHH-13390   -  person cdalxndr    schedule 07.12.2019


Ответы (1)


Небольшой и быстрый ответ для архивов. Я столкнулся с той же проблемой, однако оказалось, что исправление в jpamodelgen для поддержки инкрементного компилятора gradle было довольно простым.

Проблема с http://hibernate.atlassian.net/browse/HHH-13390 теперь решено, и исправление будет включено в предстоящий выпуск 5.4.11.

person dblocks    schedule 30.01.2020