我正在完成开始 Java EE 7中的练习,但我正在尝试使它们适应使用 Gradle 而不是 Maven。对于第 2 章拦截器练习,我编写了这个 build.gradle:
apply plugin: 'java'
repositories {
mavenCentral()
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.5', 'org.jboss.weld.se:weld-se-core:2.2.10.Final'
testCompile "junit:junit:4.11"
}
jar {
from {
configurations.compile.collect {
it.isDirectory() ? it : zipTree(it)
}
}
manifest {
attributes 'Main-Class': 'org.agoncal.book.javaee7.chapter02.Main'
}
}
我只是直接从作者的 GitHub使用 src 目录。 ./gradlew -x test build
成功然后java -jar build/libs/gradleTest.jar
给出预期的输出(尽管它也会吐出很多意外警告)。 ./gradlew test
但是失败并出现此错误:
org.jboss.weld.exceptions.DeploymentException: WELD-001417: Enabled interceptor class <class>org.agoncal.book.javaee7.chapter02.LoggingInterceptor</class> in file:/home/allen/gradleTest/build/resources/main/META-INF/beans.xml@7 does not match an interceptor bean: the class is not found, or not annotated with @Interceptor and still not registered through a portable extension, or not annotated with @Dependent inside an implicit bean archive
beans.xml 和所有类文件都直接来自作者在 GitHub 上的存储库,并且似乎与上述错误所说的完全一样。beans.xml中声明了拦截器,拦截器类用@Interceptor注解。
我的猜测是问题出在我的 gradle 构建上。有谁看到问题是什么?