在 Eclipse 中设置 EJB 构建类路径
Posted
技术标签:
【中文标题】在 Eclipse 中设置 EJB 构建类路径【英文标题】:Setting up EJB build classpath in Eclipse 【发布时间】:2019-07-09 04:32:25 【问题描述】:我已经安装了 Eclipse、WildFly 和 Jboss 工具。我创建了一个 EAR/Maven 项目和一个 EJB/Maven 项目。
我将所有依赖项添加到 EAR pom.xml。 Jboss Tools 部署 WildFly EAR 库没有问题,应用程序运行良好。
问题在于 Eclipse 中 EJB 项目中的构建类路径。由于所有依赖项都在 EAR pom.xml 而不是 EJB pom.xml 中配置,我无法弄清楚如何告诉 Eclipse 中的 EJB 项目从 EAR 项目中获取定义为依赖项的 jar。
如何设置?
【问题讨论】:
【参考方案1】:在 EJB pom.xml 中添加依赖项,而不是在 EAR pom.xml 中。
【讨论】:
我不能,我需要 WAR 的依赖项,JAR 必须在 EAR 库中。 在你的战争的 pom.xml 中添加对 ejb 项目的依赖 我更喜欢将 jar 放在 EAR 中,因为将来我可能会有其他 EJB 使用相同的 jar。【参考方案2】:您想“从 EAR 项目中获取定义为依赖项的 jars”,但这不是 Maven 的工作方式。
根据 pom.xml 中定义的依赖关系,从 Maven 存储库(如 MavenCentral 或您的本地存储库)中提取 Jars。正如@N.Shrivastava 已经说过的那样,您在实际使用依赖项的项目的 pom 中定义依赖项。因此,当您的耳朵包含具有一些依赖项的 ejb jar 时,请将依赖项放入 ejb jar 的 pom 并从耳朵的 pom 中删除它们。它们也会被传递到耳朵中。
如果你需要在不同的ejb jars中拥有相同的依赖集,这可以通过创建一个单独的打包pom的项目来实现。那么不同的ejb jars就可以依赖那个pom项目,并从pom项目中传递地提取所有的依赖。
【讨论】:
感谢您的信息。如果我将依赖项添加到 EJBpom.xml
,这些 jar 文件将物理放置在哪里?在<root EBJ>/lib
文件夹中?
Maven 通过本地存储库处理 jar,该存储库通常位于您的主目录中的 .m2/repository
中。除非需要构建它们,否则它们不会被复制到项目中。一只耳朵。构建中的所有内容都在target
目录中处理。
我将 apache commons lang 添加到 EJB pom.xml
,它被下载/复制到 .m2/repository
,但 projecttarget/lib
和 Wildfly EAR/lib
都是空的。有什么问题?
在构建EAR时,依赖是否打包到EAR工件中?
解决方案是在 Eclipse 中刷新 EAR 项目,然后将 EJB 依赖项复制到 EAR/lib。如果我不刷新项目,它不会复制 jars。以上是关于在 Eclipse 中设置 EJB 构建类路径的主要内容,如果未能解决你的问题,请参考以下文章