簡體   English   中英

如何將maven托管依賴項復制到war \ web-inf \ lib中,以便在Eclipse中以調試模式運行我的GWT 2.0應用程序?

[英]How do I get maven managed dependencies copied into war\web-inf\lib so I can run my GWT 2.0 app in debug mode within Eclipse?

我正在將現有項目從GWT 1.5.2更新為GWT 2.0.0。 我們使用maven 2來管理我們的依賴項,並在Eclipse 3.5中完成所有開發。

因為我們使用maven來管理我們的依賴項,所以我沒有像warT指定的那樣在war \\ web-inf \\ lib目錄中擁有所有這些jar。 相反,它們位於maven存儲庫中,就像maven喜歡它們一樣。 我已經設置了項目,以便maven可以在開發或Web模式下成功構建和啟動,並且應用程序可以正常運行。

問題是當我從Eclipse啟動時,我得到一個java.lang.NoClassDefFoundError。 如果我在啟動之前手動將我的依賴項復制到war \\ web-inf \\ lib中,一切運行正常,但這並不適合長期解決方案。 首先,如果我將所有這些jar檢查到我們的版本控制中,那將破壞我們從maven獲得的大部分值。 像maven一樣惱人,拋棄它不是答案。 其次,讓開發人員在每次調試時手動復制它們都是荒謬的。

那么我可以讓Eclipse在啟動之前將依賴項復制到war \\ web-inf \\ lib中嗎? 有沒有我想念的替代解決方案?

謝謝,

托尼

運行gwt:eclipse目標會將maven依賴項復制到war/WEB-INF/lib 有關更多詳細信息,請參閱Maven GWT插件Eclipse IDE Integration文檔的Eclipse Configuration部分。 另請參閱有關Maven GWT 2.0和Eclipse的 答案

您應該安裝m2eclipse插件並使用它在eclipse中構建項目。 這將從eclipse中調用maven作為外部工具。

您的maven項目工件類型應該設置為war,這將讓maven發現依賴項並將它們捆綁在一起。

看到這些鏈接:

強制Maven2將依賴項復制到target / lib中

http://maven.apache.org/plugins/maven-war-plugin/

http://maven.apache.org/plugins/maven-war-plugin/examples/rapid-testing-jetty6-plugin.html

一個maven感知的IDE(想法,eclipse,netbeans)應該自動進行這種打包。 可能是你:

  • 忘了在IDE中啟用maven導入?
  • 沒有將這些依賴項添加到pom.xml(因此它們不包含在'mvn包'階段)
  • 為依賴聲明添加了錯誤的范圍(例如,范圍'提供'或'測試'),因此它們在運行時被忽略

如果你的pom.xml中的打包方法設置為war,它應該將運行時depres復制到target / war / WEB-INF / lib中。

或者你的項目是建造像耳朵更大的東西? 如果是這樣,您應該將pom.xml拆分為多項目格式。

至於Eclipse,我對它並不十分熟悉,所以我無法真正幫助你。 當你進行運行或調試時,你(或者你可以)運行maven目標(比如“安裝”)嗎?

這不應該是一個問題。 如果您使用的是Eclipse + WTP,那么WTP允許您在項目的屬性中聲明“J2EE模塊依賴項”下列出的jar。 這些jar會自動發布到tomcat(請參閱本評論末尾的注釋)您需要在eclipse環境中聲明一個M2_REPO變量(搜索eclipse幫助以獲取'classpath變量'),它應該指向您的本地maven存儲庫,並且只是將外部jar從那里添加到項目中並將其標記為“J2EE依賴項”。 我做了很多項目,Maven和Eclipse並排:)(沒有m2eclipse)

第二種選擇是嘗試將Eclipse和Maven與m2eclipse插件集成,如提到的那樣,但我發現這是不必要的。

如果您不使用WTP,則有第三種選擇(但您應該)。 假設您使用tomcat,那么您可以將這些jar復制到$(tomcat.home)/ common / lib。 如果你只能為你的tomcat私有實例(在每個開發人員的機器上)做到這一點,那么你很高興。 這應該是一個影響較小的解決方案,它將在運行時將這些jar放入類路徑中,但它不能很好地擴展。

注意:遺憾的是,Eclipse Web項目的類路徑可能會令人困惑。 將jar添加到項目的常規構建路徑時,它們不會部署(復制)到tomcat。 為了解決這個問題,WTP定義了一個名為Webapp Library的特殊庫 - 該庫包含項目WEB-INF / lib文件夾中的所有jar,以及標記為J2EE Module Dependencies的所有外部jar。 當發布到tomcat時,所有這些jar都適當地找到了WEB-INF / lib的方式。

非常簡單:1。在您的項目下創建一個“lib”文件夾,如下所示:“\\ src \\ main \\ webapp \\ WEB-INF \\ lib”2。復制您希望包含在WAR包文件夾中的所需“jars”等。 3.像往常一樣調用maven構建。 我使用“mvn install”,它創建了war文件。

如果您檢查WAR文件,那么您在步驟1和步驟2中包含的罐子就在那里。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM