目錄結構:html
MAVEN是一個項目構建工具,參與項目建立、導入jar包、編譯、發佈、測試、打包等過程。它的使用方式有兩種:用戶命令行和可視化界面。用戶命令行就是直接在DOM窗口中輸入指令進行管理,可視化界面好比MAVEN和Eclipse整合。java
在安裝MAVEN以前應該把JDK安裝好,關於JDK的安裝和配置能夠參見詳解JDK的安裝和配置。MAVEN和JDK相似,都是壓縮包,下載完成後解壓,配置環境變量便可,APACHE MAVEN下載。在下載以前應該先肯定相應版本的MAVEN須要的JDK版本。MAVEN 3.3+須要JDK1.7及其以上,筆者下載的是MAVEN 3.5,JDK版本是1.8。程序員
下面就是筆者的解壓後MAVEN路徑: D:\Program Files (x86)\EXE\apache-maven-3.5.0 web
MAVEN_HOME =D:\Program Files (x86)\EXE\apache-maven-3.5.0spring
MAVEN_OPTS = -Xms128m -Xmx512m(可選)apache
而後再在path環境變量中追加MAVEN的配置: %MAVEN_HOME%\bin;api
配置好以後,咱們來到DOM窗口,輸入 mvn -v 。若是出現一些版本信息,那麼MAVEN就是安裝成功了。spring-mvc
MAVEN給咱們帶來的最大的好處就是管理jar包,MAVEN管理jar包的模式是從遠程倉庫中把jar包下載到本地倉庫中。倉庫能夠理解爲緩存的地址,就是緩存項目須要的jar包,那麼隨着項目的擴大,本地倉庫確定爲愈來愈大。緩存
本地倉庫默認是在 C:\Users\用戶名\.m2\repository 下,爲了節約C盤的空間,咱們將這個倉庫的地址改成: D:\Program Files (x86)\EXE\apache_maven_local_repository 。找打MAVEN的安裝目錄下的 conf/settings.xml 文件。而後咱們在<settings>節點下,加上<localRepository>節點:tomcat
<localRepository>D:/Program Files (x86)/EXE/apache_maven_local_repository</localRepository>
而後再在DOM控制檯中輸入: mvn help:system ,回車後,咱們就能夠看到一些下載信息,等下載結束後,咱們再到 D:\Program Files (x86)\EXE\apache_maven_local_repository目錄下,咱們就能夠看到許多文件了。
在牆內開發,下載速度通常比較慢,這時候可使用阿里雲的Maven倉庫.
直接在的 conf/settings.xml。裏面加上阿里雲的映射文件就能夠了。
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
在Eclipse上整合MAVEN很是簡單,咱們只須要進行兩個簡單的設置就能夠了。
在Eclicpse的Window->Preferences->Maven->Installations下面,咱們將maven添加進來。
在Eclispe的Window->Preferences->Maven->User Settings中,咱們將User Settings選項調換到MAVEN安裝目錄下的settings.xml文件夾。若是讀者的setting.xml文件,也配置了 <localRepository></localRepository> 節點,那麼能夠看到Local Responsitoy的值就是 <localRepository> 節點下面的值。若是沒有配置 <localRepository></localRepository>,那麼Local Responsitory的值就是 C:\Users\用戶名\.m2\repository 。
就設置這兩個地方,而後就能夠在Eclispe中建立MAVEN項目了。
咱們在Eclipse菜單欄中點擊File->New->Other->Maven,在彈出的對話框中會看到,以下圖所示:
點擊Maven Project,而後能夠看到:
勾選create a simple project(skip archetype selection),點擊next>後,咱們能夠看到:
這裏有幾個參數Group Id、Artifact Id、Version、Packaging。其中Group Id表示組的id,在一些大型的分組開發中會使用。Artifact Id就是之前項目名。Version表明版本。Packaging有三個值jar、pom和war,其中jar表明普通java項目,war表明web項目,pom用於集合MAVEN組件的時候使用的。
下面咱們使用Maven構建一個Spring MVC,咱們選擇Packaging爲war,而後點擊Finish。
src/main/java 裏面是存儲的java代碼的地方
src/main/resources 是存儲配置文件的地方
src/test/java 是測試java代碼的地方
src/test/resources 是測試配置文件的地方
須要說明一些,這些文件都是是Eclipse分配給咱們的可視化界面,是爲了方便咱們分類的。這是否是包!在tomcat中沒有上面的這些的文件夾的。
新建好的web項目下面是沒有web.xml的,須要在右擊Deploymeny Descriptor,而後點擊Generate Deployment Descriptor,生成web.xml文件。
Maven最大的好處就是自動管理相關的jar包,我在這裏是搭建Spring webmvc框架,那麼咱們只須要打開pom.xml文件,而後在搜索spring-webmvc
而後選擇一個版本的Spring-webmvc。保存後,Eclipse就會開始下載相關的jar包了。若是Eclispe沒有下載,那麼能夠右擊項目,而後run->Maven install。
進行下載相關的依賴包。若是在Libraries下出現Maven Dependencies包。
若是報出錯誤: The superclass " javax.servlet.http.HttpServlet" was not found on the java build path. ,那麼有兩種解決方法,第一種就和上面導入Spring-webmvc的方式同樣,直接在輸入框中搜索servlet-api,而後選擇一個版本的。不過這種方式可能會引發導入的servlet-api.jar和原來的Tomcat不兼容,這個問題最好是從本地tomcat中添加,經過build path把本地的servlet-api.jar添加進來。
到這裏位置,一個簡單的SpringMVC所須要的全部jar包就搞定了。而後咱們像往常同樣寫代碼和配置就能夠了。
項目總結構:
HelloController.java 文件
package cn.test.Controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping(value="/hello.do") public String hello(Model model){ model.addAttribute("helloinfo", "HELLO WORLD"); return "hello"; } }
applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> <context:component-scan base-package="cn"></context:component-scan> <mvc:annotation-driven></mvc:annotation-driven> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.InternalResourceView</value> </property> <!--jsp存放的目錄--> <property name="prefix"> <value></value> </property> <!--jsp文件的後綴--> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans>
web.xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>mavenSpringMVC</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
hello.jsp文件
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> ${helloinfo} </body> </html>
welcome.html文件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="hello.do">hello</a> </body> </html>
運行welcome.html文件後,打開鏈接就能夠看到以下的界面:
到這裏表示咱們數據請求就成功了。目前一個使用MAVEN管理的SpringMVC項目就完成了。Maven最主要的一個功能就是管理jar包,若是程序員手動導入jar包,頗有可能就會遇到版本不兼容,報一大堆錯,像這種各類jar包版本不兼容的問題是比較頭疼的。Maven就使程序猿從中解放出來了,使得無需關係jar的版本問題。
在上面第5點,筆者介紹瞭如何利用Maven建立Web項目。Maven除了管理jar很是方便,它在模塊開發方面也強大。徹底支持開閉原則(對擴展開發,對修改關閉)。下面筆者就來介紹一下在Eclipse中使用Maven管理的web分佈式開發。
關於建立Maven項目的細節,筆者就不在這裏贅述了,能夠參見上面第5點。
其實這裏的父模塊指的就是一種Maven項目,在上面建立MAVEN項目時候說了,jar、war和pom的區別,若是咱們須要使用Maven進行模塊開發,那麼packaging的類型就須要指定爲pom。
上面建立的父模塊能夠關聯多個子模塊,這裏爲了舉例就只建立兩個子模塊(model1和model2)。在new->other->Maven中選中Maven Module,
創建的Module名稱爲model1,關聯的父模塊的packaging的類型必須是pom。
這裏演示的是web分佈式開發,因此Packaging選擇了war。第二個model2同理第一個model1,到這裏爲止咱們就完成了一個簡單分佈式web開發部署了。若是在model1或是model2裏面編譯程序,那麼結果會當即同步到manager中去,所以能夠在manager中對model1和model2進行分佈式管理。
三着在項目中的結構:
咱們能夠看出在項父塊中,有對兩個子模塊的關聯。
到這裏關於Eclipse中進行MAVEN開發部署就講解完了,若是讀者以爲還不錯,請點個贊。