2017-03-16 152 views
2

我已經設置了一個具有本地依賴項的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插件:

如下庫的依賴是包括在內。有什麼我應該做的不同嗎?

+0

你部署一個EAR,一個WAR還是一個JAR? –

+0

我正在部署爲WAR文件 – FHannes

回答

2

<scope>provided</scope> - 當你提供的時候,你說這個庫在運行時可用,不需要用當前jar編譯。

因此,使用mvn compile/install構建的工件將不包括library依賴關係。

這意味着您正在運行的應用程序容器(wildfly)必須提供jar。

由於您在應用程序容器中沒有providedlibrary.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>

相關問題