我正在尝试为只包含MDB的ejb-jar部署创建一个wildfly swarm jar。
bean onMessage方法使用一个thirdy party库,该库包含在项目依赖项中。
生成的uber jar包含该库,但是由于某种原因,当我尝试使用该库时,我得到了一个ClassNotFound异常。
如果我们将打包类型从简单的"jar“更改为"war”,一切都会按预期进行。
将第三方依赖添加到wildfly swarm的简单ejb-jar部署中的正确方法是什么?
发布于 2019-05-28 20:27:45
我不确定什么是“正确”的解决方案。我总是觉得有点奇怪,一个尾巴包(以前是野蝇群)总是需要是一场战争,并且总是需要包括undertow和/或jaxrs,即使它们没有被使用。
正如上面的第一个注释所暗示的,在JAR包中包含第三方依赖项是可能的。
在maven项目的src/main/resources中,我添加了子目录modules/com/example/mymodule/main,并在main目录中添加了module.xml。
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.example.mymodule">
<resources>
<artifact name="org.apache.pdfbox:pdfbox:2.0.13" />
</resources>
<dependencies>
<module name="org.apache.commons.logging"></module>
<module name="org.apache.commons.io"></module>
<module name="org.apache.httpcomponents"></module>
</dependencies>
</module>上面的xml引用了我的POM中包含的maven工件。您也可以引用其他模块。
然后,我向src/main/resources/META-INF添加了一个jboss-deployment-structure.xml
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.example.mymodule" />
</dependencies>
</deployment>
</jboss-deployment-structure>你添加到POM中的任何第三方依赖项现在都需要添加到module.xml中。我知道这有点痛苦,如果maven插件能做点什么来自动化这件事,那就太好了。
https://stackoverflow.com/questions/48886770
复制相似问题