Пакет 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.