私はBeginning Java EE 7の演習に取り組んでいますが、Mavenの代わりにGradleを使用するようにそれらを適応させようとしています。第 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 dir を使用しているだけです。 ./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ビルドにあります。誰が問題が何であるかを見ていますか?