java - 将具有本地依赖的 Maven 项目部署到 WildFly

标签 java maven wildfly

我已经设置了一个具有本地依赖项的 WildFly Maven 项目。我编译用作本地依赖项的库 (mvncompile),并将其安装 (mvninstall) 到本地 Maven 存储库中。这样做可以让我使用 Maven 成功编译 WildFly 项目。我遇到的问题是它无法部署(mvn wildfly:deploy),因为它找不到本地库中引用的类,从而抛出 NoClassDefFoundError 异常。

库依赖项包含如下:

<dependency>
    <groupId>mygroup</groupId>
    <artifactId>library</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

我正在使用 WildFly Maven 插件。我应该做些什么不同的事情吗?

最佳答案

<scope>provided</scope> - 当你说提供时,你是说这个库将在运行时可用,并且不需要使用当前的 jar 进行编译。

因此,您使用 mvn compile/install 构建的 Artifact 是什么?不会包括library依赖性。

这意味着您正在运行的应用程序容器(wildfly)必须提供该 jar。

您收到错误是因为您没有 provided library.jar在您的应用程序容器中,也不必包含在您的构建文件中。

有两种解决方案:

  1. 在 jboss 配置中显式定义依赖关系: https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/6.1/html/Development_Guide/Add_an_Explicit_Module_Dependency_to_a_Deployment1.html

  2. 将范围从提供的范围更改为编译范围:<scope> compile </scope>

关于java - 将具有本地依赖的 Maven 项目部署到 WildFly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823186/

相关文章:

java - 如何获取指定按键的按下和释放事件?

java - 在 volley 加载数据时向应用程序添加进度微调器

java - jboss 7.1项目部署类未找到

maven - 有什么方法可以在故障保护下并行运行 JUnit 5 集成测试吗?

java - 从 Wildfly WebServiceContext 获取 SOAP 消息

java - 使用 "screen"命令进行输出重定向

java - 设计 junit 测试用例 - 每个测试用例的预定义步骤

java - 使用 Maven 的并行库版本

wildfly - 阿奎利安 : use different port(s) for the managed WildFly container than a normal WildFly process

mysql - 在 WildFly 中配置 MySql