У меня есть приложение со структурой модуля Gradle, подобной этой:
app - applies war
common/utilities
common/auth
et c .
Модуль app
применяет плагин WAR. При развертывании на удаленном сервере это исключение возвращается:
Caused by: java.lang.TypeNotPresentException: Type [SomeClass] not present
at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:125)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
at sun.reflect.generics.visitor.Reifier.reifyTypeArguments(Reifier.java:68)
at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:138)
at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:49)
at sun.reflect.generics.repository.ClassRepository.getSuperclass(ClassRepository.java:90)
at java.lang.Class.getGenericSuperclass(Class.java:777)
at org.kodein.di.TypeReference.<init>(types.kt:272)
Ясно, что классы из зависимых модулей как-то не заносятся в WAR (что раскрывается при использовании локатора службы Kodein) - это не интуитивно, так как это было бы не так, если бы оно было упаковано в JAR или AAR.
Кто-нибудь знает, почему это может происходить и как я могу изменить свою конфигурацию Gradle, чтобы исправить это?
Редактировать: если я расширяю WAR, я вижу, что внешние зависимости Maven переносятся в lib
как JAR вместе с модулями, не относящимися к приложениям. Все скомпилированные классы Kotlin из модуля app
находятся в classes
. Я думаю, это не работает, потому что JAR основного приложения по какой-то причине не приносит JAR модуля.