童裝網(wǎng)站建設(shè)目標(biāo)優(yōu)化網(wǎng)站seo方案
分模塊開發(fā)與設(shè)計
-
創(chuàng)建模塊
-
書寫模塊代碼
-
通過maven指令安裝模塊到本地倉庫(install指令)
- 在pom.xml中導(dǎo)入坐標(biāo)
- 執(zhí)行maven的install命令將模塊安裝到本地maven倉庫
- 團(tuán)隊(duì)內(nèi)部開發(fā)可以發(fā)布模塊功能到團(tuán)隊(duì)內(nèi)部可共享的倉庫中(私服)
依賴管理
-
依賴指當(dāng)前項(xiàng)目運(yùn)行所需的jar,一個項(xiàng)目可以設(shè)置多個依賴
-
格式:
<!--設(shè)置當(dāng)前項(xiàng)目所依賴的所有jar--> <dependencies><!--設(shè)置具體的依賴--><dependency><!--依賴所屬群組id--><groupId>org.springframework</groupId><!--依賴所屬項(xiàng)目id--><artifactId>spring-webmvc</artifactId><!--依賴版本號--><version>5.2.10.RELEASE</version></dependency> </dependencies>
依賴傳遞
依賴具有傳遞性
- 直接依賴:在當(dāng)前項(xiàng)目中通過依賴配置建立的依賴關(guān)系
- 間接依賴:被依賴的資源如果依賴其他資源,當(dāng)前項(xiàng)目間接依賴其他資源
依賴傳遞沖突
依賴傳遞沖突問題
- 路徑優(yōu)先:當(dāng)依賴中出現(xiàn)相同的資源時,層級越深,優(yōu)先級越低,層級越淺,優(yōu)先級越高
- 聲明優(yōu)先:當(dāng)資源在相同層級被依賴時,配置順序靠前的覆蓋配置順序靠后的
- 特殊優(yōu)先:當(dāng)同級配置了相同資源的不同版本,后配置的覆蓋先配置的
可選依賴
- 可選依賴指對外隱藏當(dāng)前所依賴的資源——不透明
<dependency><groupId>com.itheima</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version><!--可選依賴是隱藏當(dāng)前工程所依賴的資源,隱藏后對應(yīng)資源將不具有依賴傳遞性--><optional>false</optional>
</dependency>
排除依賴
- 排除依賴指主動斷開依賴的資源,被排除的資源無需指定版本——不需要
<dependency><groupId>com.itheima</groupId><artifactId>maven_04_dao</artifactId><version>1.0-SNAPSHOT </version><!--排除依賴是隱藏當(dāng)前資源對應(yīng)的依賴關(guān)系--><exclusions><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions>
</dependency>
- 排除依賴資源僅指定GA即可,無需指定V
聚合與繼承
聚合
- 聚合:將多個模塊組織成一個整體,同時進(jìn)行項(xiàng)目構(gòu)建的過程稱為聚合
- 聚合工程:通常是一個不具有業(yè)務(wù)功能的“空”工程(有且僅有一個pom文件)
- 作用:使用聚合工程可以將多個工程編組,通過對聚合工程進(jìn)行構(gòu)建,實(shí)現(xiàn)對所包含的模塊進(jìn)行同步構(gòu)建
- 當(dāng)工程中某個模塊發(fā)生更新(變更)時,必須保障工程中與已更新模塊關(guān)聯(lián)的模塊同步更新,此時可以使用聚合工程來解決批量模塊同步構(gòu)建的問題
聚合工程開發(fā)
-
創(chuàng)建Maven模塊,設(shè)置打包類型為pom
<packaging>pom</packaging>
- 每個maven工程都有對應(yīng)的打包方式,默認(rèn)為jar,web工程打包方式為war
-
設(shè)置當(dāng)前聚合工程所包含的子模塊名稱
<modules><module>../maven_ssm</ module><module>../maven_pojo</module><module>../ maven_dao</ module> </modules>
- 聚合工程中所包含的模塊在進(jìn)行構(gòu)建時會根據(jù)模塊間的依賴關(guān)系設(shè)置構(gòu)建順序,與聚合工程中模塊的配置書寫位置無關(guān)參與聚合的工程無法向上感知是否參與聚合,只能向下配置哪些模塊參與本工程的聚合
繼承
-
概念:繼承描述的是兩個工程間的關(guān)系,與java中的繼承相似,子工程可以繼承父工程中的配置信息,常見于依賴關(guān)系的繼承
-
作用:
- 簡化配置
- 減少版本沖突
-
父工程里可以配置依賴和可選依賴(使用dependencyManagement)
步驟
-
創(chuàng)建Maven模塊,設(shè)置打包類型為pom
<packaging>pom</packaging>
- 建議父工程打包方式設(shè)置為pom
-
在父工程的pom文件中配置依賴關(guān)系(子工程將沿用父工程中的依賴關(guān)系)
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.10.RELEASE</version></dependency>... </dependencies>
-
配置子工程中可選的依賴關(guān)系
<dependencyManagement><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>...</dependencies> </dependencyManagement>
-
在子工程中配置當(dāng)前工程所繼承的父工程
<!--定義該工程的父工程--> <parent><groupId>com.itheima</groupId><artifactId>maven_parent</artifactId><version>1.0-SNAPSHOT</version><!--填寫父工程的pom文件--><relativePath>../maven_parent/pom.xml</relativePath> </parent>
-
在子工程中配置使用父工程中可選依賴的坐標(biāo)
<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency> </dependencies>
- 子工程中使用父工程中的可選依賴時,僅需要提供群組id和項(xiàng)目id,無需提供版本,版本由父工程統(tǒng)一提供,避免版本沖突子工程中還可以定義父工程中沒有定義的依賴關(guān)系
聚合與繼承的區(qū)別
- 作用
- 聚合用于快速構(gòu)建項(xiàng)目
- 繼承用于快速配置
- 相同點(diǎn)
- 聚合與繼承的pom. xml文件打包方式均為pom,可以將兩種關(guān)系制作到同一個pom文件中
- 聚合與繼承均屬于設(shè)計型模塊,并無實(shí)際的模塊內(nèi)容
- 不同點(diǎn)
- 聚合是在當(dāng)前模塊中配置關(guān)系,聚合可以感知到參與聚合的模塊有哪些
- 繼承是在子模塊中配置關(guān)系,父模塊無法感知哪些子模塊繼承了自己
屬性
自定義屬性
- 將pom文件中使用的依賴的版本通過變量來表示,在修改的時候可以進(jìn)行統(tǒng)一管理
屬性的配置與應(yīng)用步驟
-
定義屬性
<!--定義自定義屬性--> <properties><spring.version>5.2.10.RELEASE</spring.version><junit.version>4.12</junit.version> </ properties>
-
引用屬性
使用${}進(jìn)行取值:
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version> </dependency>
- 在資源文件中引用maven中定義的屬性
-
定義屬性(在pom文件中)
<!--定義自定義屬性--> <properties><spring.version>5.2.10.RELEASE</spring.version><junit.version>4.12</junit.version><jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.ur1> </properties>
-
配置文件中引用屬性(在properties配置文件中)
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=$ijdbc.url} jdbc.username=rootjdbc.password=root
-
開啟資源文件目錄加載屬性的過濾器(在pom文件中)
- 開啟后才會將properties配置文件內(nèi)的${}占位替換為對應(yīng)的變量值
<build><resources><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering></resource></resources> </build>
-
配置maven打war包時,忽略web.xml檢查(在pom文件中 )
- 在webapp/WEB-INF目錄下缺少web.xml文件時使用war打包會報錯
- 可以新建一個空的web.xml文件
- 或者配置打包工具,在pom中如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.2.3</version><configuration><failoOnMissingwebXm1>false</failonMissingwebXm1></configuration> </plugin>
其他屬性
- 其他屬性(了解)
屬性列表
- 自定義屬性(常用)
- 內(nèi)置屬性
- Setting屬性
- Java系統(tǒng)屬性
- 環(huán)境變量屬性
版本管理
-
工程版本:
-
SNAPSHOT(快照版本)
項(xiàng)目開發(fā)過程中臨時輸出的版本,稱為快照版本
快照版本會隨著開發(fā)的進(jìn)展不斷更新
-
RELEASE (發(fā)布版本)
項(xiàng)目開發(fā)到進(jìn)入階段里程碑后,向團(tuán)隊(duì)外部發(fā)布較為穩(wěn)定的版本,這種版本所對應(yīng)的構(gòu)件文件是穩(wěn)定的,即便進(jìn)行功能的后續(xù)開發(fā),也不會改變當(dāng)前發(fā)布版本內(nèi)容,這種版本稱為發(fā)布版本
-
-
發(fā)布版本
- alpha版
- beta版
- 純數(shù)字版
多環(huán)境配置與應(yīng)用
多環(huán)境開發(fā)
- maven提供配置多種環(huán)境的設(shè)定,幫助開發(fā)者使用過程中快速切換環(huán)境(開發(fā),測試,生產(chǎn))
-
定義多環(huán)境
<!--定義多環(huán)境--> <profiles><!--定義具體的環(huán)境:生產(chǎn)環(huán)境--><profile><!--定義環(huán)境對應(yīng)的唯一名稱--><id>env_dep</id><!--定義環(huán)境中專用的屬性值--><properties><jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url></properties><!--設(shè)置默認(rèn)啟動--><activation><activeByDefault>true</activeByDefault></activation></profile><!--定義具體的環(huán)境:開發(fā)環(huán)境--><profile><id>env_pro</id>...</profile> </profiles>
-
使用多環(huán)境(構(gòu)建過程)
mvn 指令 -P 環(huán)境定義 id
范例:
mvn install -P pro_env
跳過測試
應(yīng)用場景
-
功能更新中并且沒有開發(fā)完畢
-
快速打包
-
… …
使用命令跳過測試
mvn 指令 -D skipTests
- 范例
mvn install -D skipTests
細(xì)粒度控制跳過測試
<plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version><configuration><!--設(shè)置跳過測試--><skipTests>true</skipTests><!--包含指定的測試用例--><includes> <include>**/User*Test.java</include></includes><!--排除指定的測試用例--><excludes><exclude>**/User*TestCase.java</exclude></excludes></configuration>
</plugin>
私服
-
私服簡介
- 私服是一臺獨(dú)立的服務(wù)器,用于解決團(tuán)隊(duì)內(nèi)部的資源共享與資源同步問題
-
Nexus
-
Sonatype公司的一款maven私服產(chǎn)品
-
下載地址:https://help.sonatype.com/repomanager3/download
-
Nexus安裝與啟動
-
啟動服務(wù)器(命令行啟動)
nexus.exe /run nexus
-
訪問服務(wù)器(默認(rèn)端口:8081)
http://localhost:8081
-
修改基礎(chǔ)配置信息
- 安裝路徑下etc目錄中nexus-default.properties文件保存有nexus基礎(chǔ)配置信息,例如默認(rèn)訪問端口
-
修改服務(wù)器運(yùn)行配置信息
- 安裝路徑下bin目錄中nexus .vmoptions文件保存有nexus服務(wù)器啟動對應(yīng)的配置信息,例如默認(rèn)占用內(nèi)存空間
私服倉庫分類
倉庫類別 | 英文名稱 | 功能 | 關(guān)聯(lián)操作 |
---|---|---|---|
宿主倉庫 | hosted | 保存自主研發(fā)+第三方資源 | 上傳 |
代理倉庫 | proxy | 代理連接中央倉庫 | 下載 |
倉庫組 | group | 為倉庫編組,簡化下載操作 | 下載 |
使用步驟
本地倉庫訪問私服權(quán)限設(shè)置
- 配置位置(在maven的setting.xml文件中)
<servers><!-- 配置訪問私服的權(quán)限 --><server><!-- 私服中的服務(wù)器id名稱 --><id>jihua-release</id><username>admin</username><password>admin</password></server><server><!-- 私服中的服務(wù)器id名稱 --><id>jihua-snapshot</id><username>admin</username><password>admin</password></server>
</servers>
<mirrors><!-- 配置私服的倉庫地址 --><mirror><id>maven-public</id><!-- 配置全部資源來自該倉庫 --><mirrorOf>*</mirrorOf><url>http://localhost:8081/repository/maven-public/</url></mirror>
</mirrors>
工程上傳到私服服務(wù)器設(shè)置
-
配置位置(在工程pom文件中)
<!--配置私服--> <distributionManagement><!--release版--><repository><id>jihua-release</id><url>http://localhost:8081/repository/jihua-release/</url></repository><!--snapshot版--><snapshotRepository><id>jihua-snapshot</id><url>http://localhost:8081/repository/jihua-snapshot/</url></snapshotRepository> </distributionManagement>
- 發(fā)布的時候會根據(jù)版本號后綴自動發(fā)布到相應(yīng)倉庫
-
發(fā)布命令(maven生命周期deploy命令)
mvn deploy
私服訪問中央服務(wù)器設(shè)置
-
配置位置
在nexus服務(wù)器后臺設(shè)置頁面,進(jìn)入maven-central倉庫,設(shè)置Remote storage修改url為相應(yīng)地址,例如阿里云的maven倉庫地址:https://maven.aliyun.com/repository/public
-
修改后記得保存