WildFly App Dev:如何在开发时反映运行时类路径?

我正在开发一个在单个 WildFly 16 实例上部署为 .war WebApp 的项目。

使用带有 Maven 作为开发环境的 IntelliJ Idea UE,我问自己如何在开发时在开发类路径中反映部署的应用程序在运行时将看到的类路径。

我已经在开发人员指南中阅读了隐式依赖项。所以我得出结论,我的部署的类路径将包含“始终添加的依赖项”列中的元素以及在触发条件下添加的元素(在我的例子中,这些元素是 Weld、Web、Hibernate、Resteasy、EJB3)。

我如何确定我必须导入哪些 Maven 工件,以便我的开发类路径等于我的 WebApp 的运行时类路径?

我想在开发时解决依赖冲突,而不是在运行时。


长风秋雁
浏览 84回答 1
1回答

绝地无双

为此,您可以使用WildFly 16 物料清单 (BOM)。我相信您很清楚Maven对POM类型工件的导入功能。以防万一,将这些行添加到您的Maven&nbsp;pom.xml中:<dependencyManagement>&nbsp; <dependencies>&nbsp; &nbsp; &nbsp; <dependency>&nbsp; &nbsp; &nbsp; &nbsp; <groupId>org.wildfly.bom</groupId>&nbsp; &nbsp; &nbsp; &nbsp; <artifactId>wildfly-javaee8</artifactId>&nbsp; &nbsp; &nbsp; &nbsp; <version>16.0.0.Final</version>&nbsp; &nbsp; &nbsp; &nbsp; <type>pom</type>&nbsp; &nbsp; &nbsp; &nbsp; <scope>import</scope>&nbsp; &nbsp; </dependency>&nbsp; </dependencies></dependencyManagement>它使您能够引用 WildFly 的大部分工件(或至少相关工件)以及 Java EE 8 规范工件。这是一个例子:<dependencies>&nbsp; <dependency>&nbsp; &nbsp; <groupId>org.hibernate</groupId>&nbsp; &nbsp; <artifactId>hibernate-entitymanager</artifactId>&nbsp; &nbsp; <scope>provided</scope>&nbsp; </dependency>&nbsp; <dependency>&nbsp; &nbsp; <groupId>org.jboss.spec.javax.servlet</groupId>&nbsp; &nbsp; <artifactId>jboss-servlet-api_4.0_spec</artifactId>&nbsp; &nbsp; <scope>provided</scope>&nbsp; </dependency></dependencies><!-- And so on... -->不过,您仍然需要列出所有需要的依赖项。如果您有额外的依赖项(不是由 WildFly 提供),您应该将它们打包到您的WAR或EAR中。这样你就不应该有任何冲突。哦,还有一件事,因为您提到了几个特定于 WildFly 的依赖项(例如 Weld 和 Hibernate):尽可能坚持使用 Java EE API。如果需要,它使您能够更快地将应用程序移植到其他应用程序服务器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java