(1)Maven是一個項目構建工具,由apache提供,用Java開發的css
(2)構建工具:Ant(螞蟻),Maven(專家)html
(3)構建工具做用:幫助程序員進行項目的建立,目錄的建立、代碼的編譯,執行,測試,打包...java
(4)傳統構建的缺陷:mysql
a:項目之間的依賴不方便,只能經過導包的形式創建關聯程序員
b:不能實時更新代碼web
c:導包方式麻煩,須要本身下載jar進行導入spring
d:當導入的jar包比較多時,容易發生包的重複,相同包的不一樣版本,jar包之間版本兼容問題sql
(5)Maven當前最新版本爲3.6.1,本文章使用3.3.9數據庫
第二章:Maven經常使用配件概念apache
(1)倉庫,Repository,用於存放全部的jar包
a:中央倉庫,由apache官方提供,境外網址,下載速度慢
b:鏡像倉庫,由各個國家地區爲國內程序員提供的倉庫,阿里巴巴
c:本地倉庫,jar包永遠從本地倉庫獲取
(2)座標
a:groupid:組編號,一般是逆向的公司域名
b:artifactid:項目的名稱
c:version:版本號
查詢jar包座標的網址:
官網: https://mvnrepository.com/
阿里: https://maven.aliyun.com/mvn/search
注:Maven插件、本地倉庫(包括jar包),在文章末尾會有網盤下載連接,注意下載
(1)編碼方式:UTF-8(包括Workspace、css、HTML、JSP、XML的編碼格式)
(2)檢查jdk版本:1.8
注:最好不要使用系統默認的JDK,使用本地安裝的JDK,不然工程運行會報錯
(3)配置tomcat
(4)我的愛好配置:
a:字體設置
b:去除拼寫檢查
c:更換工程格式爲Package Explorer
注意:在加載完成後,不要當即去建立Maven工程,不然會形成Eclipse卡頓
(1)指定Maven的配置文件settings.xml
(2)配置本地倉庫位置
E:\Repository
(3)配置鏡像倉庫位置
用阿里巴巴的倉庫,國內倉庫,網速快
<!-- 配置鏡像倉庫地址 --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
(4)配置jdk:
<!-- 指定jdk版本 -->
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
分三種類型:
(1)jar:表明一個javase工程,未來Maven打包時會將這個工程打包成jar包
(2)war:表明一個web工程,打包成war包
(3)pom:表示一個邏輯工程,工程中只作項目管理,不作代碼編寫
pom:Project Object Model,能夠將一個工程當成一個對象
Group Id:表示路徑Id別的項目經過此ID進行定位本項目
Artifact Id:工程名稱
Version:版本號
0.0.1-SNAPHOT:表示當前工程處於修改階段,不建議引用
當配置完成後,點擊保存,系統就戶i根據依賴配置去下載相關jar包,並加載到工程中
(1)packading:war
(2)在項目建立成功後,生成web.xml 文件
(3)應該放在src/main/webapp/WEB-INF/web.xml
(4)建議自動生成,不建議手動建立目錄,項目上右鍵->JavaEE Tools->Generate Deployment Descriptor Stub
(1)須要Tomcat支持,Maven中提供了Tomcat插件,每個項目均可以有本身獨特的Tomcat,便於獨立開發某同事便於分佈式開發
(2)編碼時須要依賴servlet-api.jar和jsp-api.jar
(3)須要依賴相關框架的jar包:spring,springmvc,mybatis...
<scope>test</scope>
表示該包只是在測試的時候生效,在項目運行和打包時不會生效
<scope>provided</scope>
表示該jar包只會在代碼編寫過程當中和編譯中生效,不會打包到jar包中
<scope>compile</scope>
表示該包在全部階段都會有效,包括項目打包階段,爲默認值
<scope>runtime</scope>
表示該包只是在運行時有用,好比數據庫驅動包
<!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.13</version> </dependency>
<!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency>
<!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.3</version> </dependency>
<!-- MaBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
<!-- web --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax-servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<!-- commons --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.4</version> </dependency>
<!-- log --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
<!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
maven build
輸入命令:clean tomcat7:run
(1)pom工程是一個邏輯工程,只作項目的管理,不作代碼的編寫
(2)pom工程一般適一個父工程,擁有多個子工程
(3)pom工程中能夠對jar包進行統一管理,子工程能夠無需再配置jar包
(1)由於子工程可能有多個,而多個子工程不可能用到全部負工程中定義的jar包,因此,能夠在pom工程中經過<dependencyManagment>標籤對jar包進行統一管理
(2)使用<dependencyManagement>標籤訂義的依賴,只作聲明,並不會直接使用,若是須要使用,仍是須要經過配置<dependency>標籤,父工程中國統一聲明依賴,能夠有效的集中控制依賴(版本)
(3)使用<properties>標籤對依賴jar包的版本進行控制,例如:
<properties> <spring-version>4.1.6-release</spring-version> </properties> <version>${spring-version}</version>
依賴關係是最弱的一種關係,有A和B兩個工程,A工程中須要使用B工程中定義的屬性或方法,那麼,此時咱們說A依賴B
例若有A和B兩個工程,B工程繼承A工程,要求A工程必須是一個pom工程
在當前工程座標中,若是groupId和version跟父工程相同,那麼能夠省略
聚合關係要求必須是先有繼承關係,聚合關係要比積塵搞關係更緊密
將一個大型工程,拆分紅多個小工程,這幾個小工程合起來是一個工程
建立聚合工程的方式:
(1)先建立一個頂級工程,該工程必須是pom工程
(2)在頂級工程的基礎上建立Maven Module
一個項目,有按功能拆分和按層次拆分兩種,本次練習按照前臺項目和後臺項目進行拆分
SSM聚合工程,結構:
(1)頂級工程
名稱:project-ssm
類型:pom
pom.xml:全部依賴的管理
(2)實體類模塊
名稱:ssm-pojo
類型:jar
(3)數據訪問模塊
名稱:ssm-mapper
類型:jar
pom.xml
(4)後臺系統
名稱:ssm-management
類型:pom
(5)後臺系統的控制器模塊
名稱:management-controller
類型:war
pom.xml
(6)後臺系統的服務模塊
名稱:management-service
類型:jar
pom.xml
(7)後臺系統的服務實現模塊
名稱:management-service-impl
類型:jar
pom.xml
web工程在運行前,須要將整個工程安裝在本地倉庫
<!-- 添加依賴 --> <!-- 管理jar包版本 --> <properties> <spring-version>4.1.6.RELEASE</spring-version> <aspectj-version>1.8.13</aspectj-version> <jackson-version>2.7.3</jackson-version> <mybatis-version>3.4.6</mybatis-version> <mybatis-spring-version>1.3.2</mybatis-spring-version> <mysql-version>5.1.38</mysql-version> <servlet-api-version>2.5</servlet-api-version> <jsp-api-version>2.1</jsp-api-version> <jstl-version>1.2</jstl-version> <fileupload-version>1.3.1</fileupload-version> <lang3-version>3.4</lang3-version> <log4j12-version>1.7.25</log4j12-version> <junit-version>4.12</junit-version> </properties> <dependencyManagement> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj-version}</version> </dependency> <!-- SpringMVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-version}</version> </dependency> <!-- jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-version}</version> </dependency> <!-- MaBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis-version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis-spring-version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-version}</version> <scope>runtime</scope> </dependency> <!-- web --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api-version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api-version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl-version}</version> </dependency> <!-- commons --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${fileupload-version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${lang3-version}</version> </dependency> <!-- log --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${log4j12-version}</version> </dependency> <!-- Junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit-version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> <build> <pluginManagement> <plugins> <plugin> <!-- Tomcat插件 --> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <!-- 配置tomcat --> <configuration> <path>/</path> <port>80</port> </configuration> </plugin> </plugins> </pluginManagement> </build>
熱部署指的是經過Maven將項目遠程部署到已經啓動的服務器上的操做
須要藉助tomcat默認提供的管理項目來實現,叫作manager
host-manager文件夾:是對Tomcat服務器進行管理
manager文件夾:是對部署到服務器上的項目進行管理
對於Tomcat7,使用管理器應用程序所需的角色已從各個大哥管理器角色更改成如下四個角色。若是須要分配你但願訪問的功能所需的角色;
manager-gui:容許訪問HTML、GUI和狀態頁面
manager-script:容許訪問文本界面和狀態頁面
manager-jmx:容許訪問JMX代理和狀態頁面
manager-status:僅容許訪問狀態頁面
在D:\Java_SoftWare\apache-tomcat-7.0.53-windows-x64\apache-tomcat-7.0.53\conf,修改tomcat-users.xml配置文件
<role rolename="manager-gui" /> <role rolename="manager-script" /> <user username="tomcat" password="tomcat" roles="manager-gui,manager-script"/>
方法一:頁面操做
地址欄輸入:http://localhost:8080/manager
而後輸入用戶名,密碼,進入頁面進行項目的部署和管理
方法二:腳本命令操做
<!-- 配置tomcat --> <configuration> <path>/</path> <port>80</port> <!-- 配置熱部署 --> <url>http://192.168.57.165:8080/manager/text</url> <username>tomcat</username> <password>tomcat</password> </configuration>
輸入:
若是是第一次部署,輸入:clean tomcat7:deploy
若是將項目修改,進行再次部署,輸入:clean tomcat7:redeploy
注:
Maven插件及本地jar包倉庫下載:
連接:https://pan.baidu.com/s/1vB_S1A7mvADtrkxn1IEtbw
提取碼:ij5z