Я нашел решение проблемы, которая на самом деле не с DeltaSpike, а с Weld, который я использую под капотом.
Проблема и решение очень хорошо задокументированы здесь:
https://discuss.gradle.org/t/application-plugin-run-task-should-first-consolidate-classes-and-resources-folder-or-depend-on-installapp-or-stuff-like-weld-se-wont-work/1248
Я приведу его здесь на случай, если ссылка умрет, проблема вызвана тем, что Gradle создает разделенные main
и resource
, поэтому сначала ресурс выходные данные нужно изменить, чтобы соединить их так:
sourceSets {
main {
output.resourcesDir = output.classesDirs.singleFile
}
test {
output.resourcesDir = output.classesDirs.singleFile
}
}
Это просто устанавливает вывод ресурса в каталог классов.
Теперь нам нужно запустить приложение с Gradle вместо нашего В IDE мы добавляем плагин application
.
plugins {
id "application"
id "java"
id "io.spring.dependency-management" version "1.0.9.RELEASE"
}
Теперь, когда у вас есть плагин application
, вам нужно будет указать и основной класс.
application {
mainClassName = "org.elypia.deltaspike.Main"
}
Затем с помощью application
плагин, выполните run
, и вы должны быть хороши для go.
Если вы используете аннотации Deltaspike, вам может потребоваться изменить ваш beans.xml
, чтобы найти all
скорее чем просто annotated
, так как некоторые аннотации, которые вы можете использовать, могут не быть andard CDI аннотации.
Редактировать: я отправил свое тестовое репо в GitLab, чтобы его могли видеть все:
https://gitlab.com/SethiPandi/mini-deltaspike