我已经设置了一个具有本地依赖关系的WildFly Maven项目。我编译了用作本地依赖项的库(mvn compile
)并将其安装在本地Maven存储库中(mvn install
)。这样做可以让我使用Maven成功编译WildFly项目。我遇到的问题是它无法部署(mvn wildfly:deploy
),因为它无法找到本地库中引用的类,因此会抛出NoClassDefFoundError异常。
库依赖关系包括如下:
<dependency>
<groupId>mygroup</groupId>
<artifactId>library</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
我正在使用WildFly Maven插件。我有什么不同的做法吗?
答案 0 :(得分:3)
<scope>provided</scope>
- 当你说你提出你说这个lib将在运行时可用而不需要用当前的jar编译。
因此,使用mvn compile/install
构建的工件不会包含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
将范围从提供更改为编译:{{1}}