我有一個自定義類加載器jar <scope>provided</scope>
,它必須在我的webapp運行之前在tomcat/lib中,否則它無法啓動。我正在使用WTP。有什麼方法可以配置M2E/WTP在部署過程中自動將此自定義jar複製到tomcat/lib?M2E WTP複製提供罐子
編輯:
它不必使用WTP,我還可以使用,例如,使用的tomcat6-Maven的插件的解決方案。
我有一個自定義類加載器jar <scope>provided</scope>
,它必須在我的webapp運行之前在tomcat/lib中,否則它無法啓動。我正在使用WTP。有什麼方法可以配置M2E/WTP在部署過程中自動將此自定義jar複製到tomcat/lib?M2E WTP複製提供罐子
編輯:
它不必使用WTP,我還可以使用,例如,使用的tomcat6-Maven的插件的解決方案。
我花了很多時間研究這個問題,這裏就是我發現:
的tomcat6中,Maven的插件不正確地模擬the tomcat boot order,爲this jira issue視爲以及他們tomcat6-maven-plugin source。
但是,經過更多的研究,我發現了另一個我不知道存在的maven插件:貨物。 Thanks to their excellent documentation我能夠使用自定義(和挑剔)類加載器jar來運行我的項目。
對於使用Tomcat Maven插件運行嵌入式Tomcat實例,添加Tomcat lib
dir中所需的JAR作爲Tomcat插件本身的依賴關係,如in this example所示,具有derby和javamail依賴關係。
這是行得通的,但現在它破壞了,因爲classloader jar依賴於WEB-INF/lib中的另一個jar,並且找不到它。 – Ring
從Tomcat的'lib'目錄中的JAR加載的類類將無法看到您的webapp類 - 請參閱[Tomcat的類加載器頁面](https://tomcat.apache.org/tomcat-6.0-doc/class-loader- howto.html)的解釋。 Tomcat的'lib'目錄使用'common'類加載器,你的webapp是'common'的子類,子類加載器只能看到父類,父類不能看到子類。我可以問你想從Tomcat的通用類加載器中加載哪些需要查看你的webapp類的東西嗎?也許還有另一種解決方案? – prunge
使用提供的範圍,您將其標記爲由服務器容器提供。如果它啓動失敗,可能是因爲服務器不可用。您是否嘗試過忽略範圍? –
如果我使用默認範圍,它將依賴項複製到WEB-INF/lib,並且不可用作類加載器。這個jar需要在tomcat/lib中。 – Ring
爲什麼不直接將jar複製到該目錄?我懷疑你可以用Maven或WTP來實現類似的功能。 –