如何解决为什么 Weld SE 偏爱某些 beans.xml 类路径放置? 来自 src/main/resources来自 src/test/resources来自 src/main/resources 和 src/test/resources
测试类路径中的 Gradle Weld SE beans.xml 导致不满意的依赖
上下文
运行创建单个 bean 新实例的单元测试只会在 beans.xml 类路径放置的某些变体中导致不满意的依赖项异常。 我已将场景简化为下面的片段。如果您需要更多信息,请告诉我,但这已经足够了。
package foo.bar;
public class MyBean {
//nothing here.
}
package foo.bar;
import org.junit.jupiter.api.Test;
import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;
class BeanTest {
@Test
void createBean() {
final Weld weld = new Weld();
final WeldContainer container = weld.initialize();
final MyBean bean = containerl.select(MyBean.class).get();
}
}
说明
如果只有一个 beans.xml 文件,则需要将其复制到 src/main 类路径中。 如果有两个,则复制它们的顺序很重要。 我想知道的是:
- 当只有一个时,为什么 Weld 无法在测试类路径中找到/搜索 beans.xml?
- 当有 2 个 beans.xml 文件时,为什么 Weld 需要先将 beans.xml 文件复制到 test-classpath 中,如果只有一个,它会完全忽略 test-classpath 上的文件?立>
- 如果 Weld 找到两个 beans.xml 文件(一个在 main 上,一个在 test 上),最终会生成哪个 beans.xml 文件?
当然,我在这里假设这是由于 Weld SE。但是,这可能是由于 gradle 或此设置的其他部分。任何输入表示赞赏。
版本
Gradle:6.5.1
Java:11.0.8
Windows:10 家
依赖项
dependencies {
implementation group: 'jakarta.enterprise',name: 'jakarta.enterprise.cdi-api',version: '3.0.0'
testImplementation group: 'org.jboss.weld.se',name: 'weld-se-core',version: '4.0.0.Final'
}
复制到 Gradle 类路径
来自 src/main/resources
作品classes {
doLast {
copy {
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
}
}
}
classes {
doLast {
copy {
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
into "$buildDir/classes/java/main/"
}
}
}
不起作用
classes {
doLast {
copy {
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
}
}
}
classes {
doLast {
copy {
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
into "$buildDir/classes/java/test/"
}
}
}
来自 src/test/resources
作品classes {
doLast {
copy {
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
}
}
}
classes {
doLast {
copy {
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
into "$buildDir/classes/java/main/"
}
}
}
不起作用
classes {
doLast {
copy {
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
}
}
}
classes {
doLast {
copy {
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
into "$buildDir/classes/java/test/"
}
}
}
来自 src/main/resources 和 src/test/resources
作品classes {
doLast {
copy {
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
}
}
}
不起作用
classes {
doLast {
copy {
from('src/main/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/main/"
from('src/test/resources') { include 'meta-inf/beans.xml' }
into "$buildDir/classes/java/test/"
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。