我已经设置了一个具有本地依赖项的 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
在您的应用程序容器中,也不必包含在您的构建文件中。
有两种解决方案:
在 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
将范围从提供的范围更改为编译范围:
<scope> compile </scope>
关于java - 将具有本地依赖的 Maven 项目部署到 WildFly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42823186/