[英]Maven sees dependent project jar from Eclipse but not from the command line
[英]How to create a maven project which will work in eclipse and from command line
我有任何問題:
哇,一次有很多問題。 我承認,使用Maven和Eclipse設置Webapp項目可能很棘手,因此我將盡力回答所有這些問題。
如何使用servlets jsp和maven創建其他類的Java Web項目? 它創建一個簡單的目錄結構,src-> main-> java。
當您創建Java Web項目時,最終產品應該是WAR或EAR文件。 WAR和EAR文件是具有特定結構的JAR文件,可以將其部署在應用程序服務器或servlet容器中。
如前所述,為Web應用程序設置Maven項目的最簡單方法是使用原型:
mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp
如果我們使用此原型創建項目,則將生成一個簡單的目錄結構和pom.xml。 該項目遵循您提到的標准Maven目錄布局,帶有/src/main/java/
, /src/test/java
等。Maven使用war:war目標從此結構生成WAR文件。
請注意,此原型適用於非常簡單(過時)的Web應用程序,但這是最佳的起點。 您可能想要丟棄web.xml文件,並創建一個支持Servlet 3.0的新文件。
我在哪里以及如何放置web-inf文件夾?
默認情況下,Maven期望應放在WAR文件根目錄中的資源(例如圖像,html頁面和WEB-INF目錄)駐留在/src/main/webapp/
。 因此,WEB-INF文件夾應該位於/src/main/webapp/WEB-INF/
。 如果您使用maven-archetype-webapp,則會自動創建此目錄以及一個示例web.xml文件。
您在問題標題中提到了Eclipse,確實可以使用m2eclipse插件在Eclipse中開發Mavenized Web應用程序。 Eclipse通過WTP(Web工具平台)對Web應用程序提供了良好的支持。
盡管Internet上有許多指南(錯誤地)都推薦這樣做,但是您不應使用mvn eclipse:eclipse命令來創建Eclipse項目 。 該插件只能為非常老的Eclipse版本生成WTP項目(最大為WTP 2.0)。 相反,請按此處所述使用m2eclipse插件。
我是否需要將jdbc-drivers手動添加到web-inf / lib內的文件夾中,還是可以指出依賴項?
無需手動執行此操作,因為Maven的關鍵優勢之一是依賴管理。 如果在pom.xml中添加具有編譯或運行時范圍的依賴項,則JAR文件將自動包含在WAR文件的WEB-INF/lib/
目錄中。 例如,要添加Postgresql JDBC驅動程序依賴項,請將其添加到pom.xml中:
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
由於范圍是未指定的,因此Maven將假定它在默認范圍compile中 。 結果是Maven將在WAR文件中包含WEB-INF/lib/postgresql-9.1-901.jdbc4.jar
。
有沒有辦法用junit測試servlet?
在Stackoverflow上已問(並回答)了這個問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.