簡介
maven是一個項目管理工具,它的核心功能是:
- 項目構建:統一開發規範與工具
- 依賴管理:統一管理jar包
我們通過配置pom.xml來使用maven的這些功能:
它可以解決項目開發中常遇到的一些問題:
1、都是同樣的代碼,爲什麼在我的機器上可以編譯執行,而在他的機器上就不行?
2、爲什麼在我的機器上可以正常打包,而配置管理員卻打不出來?
3、項目組加入了新的人員,我要給他說明編譯環境如何設置,但是讓我撓頭的是,有些細節我也記不清楚了。
4、我的項目依賴一些jar包,我應該把他們放哪裏?放源碼庫裏?
5、這是我開發的第二個項目,還是需要上面的那些jar包,再把它們複製到我當前項目的svn庫裏吧
6、現在是第三次,再複製一次吧 ----- 這樣真的好嗎?
7、我寫了一個數據庫相關的通用類,並且推薦給了其他項目組,現在已經有五個項目組在使用它了,今天我發現了一個bug,並修正了它,我會把jar包通過郵件發給其他項目組,這不是一個好的分發機制,太多的環節可能導致出現bug
8、項目進入測試階段,每天都要向測試服務器部署一版。每次都手動部署,太麻煩了。
----此段摘自 https://blog.csdn.net/it_lihong/article/details/79088030
安裝配置
mac上安裝配置maven:
1.下載maven:下載完成後解壓,放到想放的位置。
2.配置maven環境變量:
# java,tomcat,maven
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
CATALINA_HOME=/Library/java/tomcat/apache-tomcat-8.0.50
M2_HOME=/Library/Java/maven/apache-maven-3.5.3
PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$M2_HOME/bin:$PATH:.
CLASSPATH=JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME
export CATALINA_HOME
export M2_HOME
export PATH
export CLASSPATH
按esc :wq回車,保存退出後
在終端輸入 source ~/.bash_profile 以使文件生效。(勿忘這一步)
3.驗證:終端輸入: mvn -v
4.eclipse中配置maven
preferences->maven->installations 添加自己安裝的maven
5.國內配置淘寶鏡像:~/.m2/setting.xml(.m2是隱藏目錄,shift+command+.顯示隱藏目錄)
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
Windows上安裝配置maven:
1.下載maven:下載完成後解壓,放到想放的位置。
2.配置maven環境變量:
M2_HOME=/Library/Java/maven/apache-maven-3.5.3
在path中添加%MAVEN_HOME%\bin;
3.驗證:終端輸入: mvn -v
4.eclipse中配置maven
preferences->maven->installations 添加自己安裝的maven
5.國內配置淘寶鏡像:用戶文件夾/.m2/setting.xml(.m2是隱藏目錄,win10文件瀏覽器菜單欄->查看->勾選隱藏的目錄)
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
項目構建
maven項目結構
Maven在進行項目構建時,它對項目目錄結構擁有約定,知道你的源代碼在哪裏,類文件應該放到哪裏去。
Project
|-src
| |-main
| | |-java —— 存放項目的.java文件
| | |-resources —— 存放項目資源文件,如spring, hibernate配置文件
| |-test
| |-java ——存放所有測試.java文件,如JUnit測試類
| |-resources —— 測試資源文件
|-target —— 目標文件輸出位置例如.class、.jar、.war文件
|-pom.xml ——maven項目核心配置文件
創建及運行maven項目
step1:New->maven project
step2:選擇工程模板
step3:填寫maven座標
step4:配置pom.xml : 添加servlet依賴,解決jsp報錯問題。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.leon</groupId>
<artifactId>demo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>demo Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 版本常量 -->
<properties>
<!-- junit依賴 -->
<junitVersion>3.8.1</junitVersion>
<!-- jstl,servelt依賴 -->
<jstlVersion>1.2</jstlVersion>
<servletVersion>2.5</servletVersion>
</properties>
<!-- 依賴管理 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junitVersion}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servletVersion}</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>demo</finalName>
</build>
</project>
step5:運行項目
方式一:使用 Maven Build發佈運行
右鍵項目->run as ->maven build …->goals輸入tomcat:run ->run
方式二:當作普通javaWeb發佈運行
servers視圖->new server->新建一個Tomcat server->將maven項目add->啓動服務器
導入maven項目
import->Existing Maven Projects->選擇導入的maven項目的pom.xml->執行maven install
Maven搭建SSH(Spring MVC + Spring +Hibernate)框架
準備工作
1/安裝並配置java運行環境
2/數據庫的安裝配置(Mysql)
3/安裝並配置服務器(Tomcat)
4/安裝並配置Maven
5/安裝 springsource-tool-suite(可選插件)
6/ eclipse創建MAVEN web項目
導包
配置好pom.xml後,系統會自動到maven的中央倉庫去下載相應的包.
/pom.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.leon.app</groupId>
<artifactId>egg</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Getting Started with Spring on JBoss</name>
<!-- 版本信息常量-->
<properties>
<encodeType>UTF-8</encodeType>
<jdkVersion>1.7</jdkVersion>
<mavenCompilerPluginVersion>3.1</mavenCompilerPluginVersion>
<mavenWarPluginVersion>2.3</mavenWarPluginVersion>
<jstlVersion>1.2</jstlVersion>
<taglibVersion>1.1.2</taglibVersion>
<servletVersion>2.5</servletVersion>
<springVersion>4.3.1.RELEASE</springVersion>
<hibernateVersion>4.3.5.Final</hibernateVersion>
</properties>
<dependencies>
<!-- jsp頁面使用的jstl支持-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibVersion}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servletVersion}</version>
<scope>provided</scope>
</dependency>
<!-- spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springVersion}</version>
</dependency>
<!-- spring web + spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springVersion}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springVersion}</version>
</dependency>
<!-- hibernate配置-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${mavenCompilerPluginVersion}</version>
<configuration>
<source>${jdkVersion}</source>
<target>${jdkVersion}</target>
<encoding>${encodeType}</encoding>
</configuration>
</plugin>
</plugins>
<finalName>egg</finalName>
</build>
</project>
SpringMVC配置
1、/egg/src/main/resources/spring-mvc.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:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- 啓用spring mvc 註解 -->
<mvc:annotation-driven />
<!-- 設置使用註解的類所在的jar包 -->
<context:component-scan base-package="com.leon" />
<!-- 頁面路徑解析:在請求時模型視圖名稱添加前後綴 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /><!--默認,可不配。 決定視圖類型,如果添加了jstl支持(即有jstl.jar),那麼默認就是解析爲jstl視圖 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" /><!--可爲空,方便實現自已的依據擴展名來選擇視圖解釋類的邏輯 -->
</bean>
<!-- 對靜態資源文件的訪問 -->
<mvc:resources mapping="/images/**" location="/static/images/" />
<mvc:resources mapping="/js/**" location="/static/js/" />
<mvc:resources mapping="/css/**" location="/static/css/" />
</beans>
2、/egg/src/main/webapp/WEB-INF/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_3_0.xsd" version="3.0">
<display-name>egg</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- spring MVC DispatcherServlet config start -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 此處指向的的是SpringMVC的配置文件 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--配置容器在啓動的時候就加載這個servlet並實例化 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- spring MVC DispatcherServlet config end -->
</web-app>
參考文獻
框架篇:Spring+SpringMVC+hibernate整合開發
Spring Tool Suite(STS)和Maven建立的Spring mvc 項目
Maven常見問題及解決
1、Web Version修改
將web version由默認的2.3修改爲3.0
首先看到這個下面這個界面(沒有這個view的話,Window->Show View->Navigator
打開我選中的org.eclipse.wst.common.project.facet.core.xml這個文件
原內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="2.3"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
修改jst.web這個屬性如下:
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<fixed facet="wst.jsdt.web"/>
<installed facet="jst.web" version="3.0"/>
<installed facet="wst.jsdt.web" version="1.0"/>
<installed facet="java" version="1.8"/>
</faceted-project>
這樣就可以將Web version從默認的2.3修改成3.0
2、JDK Version修改
修改jdk版本爲1.8
打開pom.xml文件,找到標籤
添加如下標籤:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
3、maven提示需要更新Maven項目
項目右擊-》Maven-》Update Project完成。
參考文獻
後記: 好記性不如爛筆頭,寫這篇maven教程,主要是爲了備忘,如果能幫到新入坑的小夥伴,那就更好了。
Thank you for reading.