将具有本地依赖项的Maven项目部署到WildFly
问题描述:
我已经设置了一个具有本地依赖项的WildFly Maven项目。我编译用作本地依赖项的库(mvn compile
),并将它安装在本地Maven存储库中(mvn install
)。这样做可以让我使用Maven成功编译WildFly项目。我遇到的问题是无法部署(mvn wildfly:deploy
),因为它无法找到本地库中引用的类,因此导致引发NoClassDefFoundError异常。将具有本地依赖项的Maven项目部署到WildFly
<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
构建的工件将不包括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>
你部署一个EAR,一个WAR还是一个JAR? –
我正在部署为WAR文件 – FHannes