久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

初始自動化構建工具-Maven

 怡紅公子0526 2022-01-21

?????????????

01 自動化構建工具:Maven
???瀏覽器
???表示層,、表述層,、表現(xiàn)層:①視圖層:H5、CSS,、JS,、JSP等 ②控制層:Servlet、Action(Struts2),、Handler(SpringMVC)等
???業(yè)務邏輯層:Spring IOC / AOP
???持久化層:JDBC,、DBUtils、SpringTemplate,、Hibernate,、Mybatis
???數(shù)據(jù)庫:Mysql、Oracle

02 目前的技術在開發(fā)中存在的問題
??① 一個項目就是一個工程
??② 項目中需要的jar包必須手動"復制",、"粘貼"到 WEB-INF / lib 目錄下
??③ jar 包需要別人替我們準備好,,或到官網(wǎng)下載
??④ 一個 ja r包依賴的其它 jar 包需要自己手動加入到項目中,F(xiàn)ileUpload組件->IO組件

03 Maven是什么
??① Maven一款服務于Java平臺的自動化構建工具,。
??? Make-->Ant-->Maven-->Gradle
??② 構建
????(1)概念:以"Java源文件",,"框架配置文件","JSP",,"HTML",,"圖片"等資源為原材料,去"生產"一個可以運行的項目的過程
????????編譯,,部署,,搭建
????(2)編譯:Java 源文件(User.java)->編譯->Class字節(jié)碼文件(User.class)->交給JVM去執(zhí)行
????(3)部署:一個 BS 項目最終運行的并不是動態(tài)Web 工程本身,而是這個動態(tài) Web 工程的"編譯結果":動態(tài)Web工程->編譯,、部署->編譯結果
??動態(tài) Web 工程目錄結構:
??工程名
????src??源碼
????JRE System Library??運行時環(huán)境
????Apache Tomcat v6.0??運行時環(huán)境

????build??源碼的字節(jié)碼文件
????WebContent??前端頁面展示
??????META-INF
??????WEB-INF
????????lib
????????web.xml
??????index.jsp
??③構建過程中的各個環(huán)節(jié)
???(1)清理:將以前編譯得到的舊的 class 字節(jié)碼文件刪除,,為下一次編譯做準備
???(2)編譯:將 Java 源程序編譯成 class 字節(jié)碼文件
???(3)測試:自動測試,,自動調用 junit 程序
???(4)報告:測試程序執(zhí)行的記過
???(5)打包:動態(tài) Web 工程打war 包,Java工程打 jar 包
???(6)安裝:Maven 特定的概念--將打包得到的文件復制到"倉庫"中指定位置
???(7)部署:將動態(tài) Web 工程生成的war 復制到 Servlet 容器的指定目錄下,,使其可以運行
??④自動化構建

04 安裝 Maven核心程序
??① 檢查 JAVA_HOME 環(huán)境變量
??② 解壓Maven 核心包文件,,放在一個無中文無空格的路徑下
??③ 配置Maven 相關環(huán)境變量
???(1)MAVEN_HOME或M2_HOME :Maven核心包解壓后的路徑
???(2)Path:追加Maven核心包解壓后的路徑 / bin
??④ 驗證:運行 mvn -v,查看 Maven 版本

05 Maven的核心概念
??① 約定的目錄結構
??② POM
??③ 坐標
??④ 依賴
??⑤ 倉庫
??⑥ 生命周期/插件/目標
??⑦ 繼承
??⑧ 聚合

06 第一個 Maven 工程
??① 創(chuàng)建 Maven 約定的目錄結構
??Hello??工程名
??|??src??源碼
??|??|??main??主程序
??|??|??|??java??Java源文件
??|??|??|??resources??存放框架或其它工具配置文件
??|??|??test??測試程序
??|??|??|??java
??|??|??|??resources
??|??pom.xm??Maven配置核心文件

??② 為什么要遵守約定的目錄結構
????約定 > 配置 > 編碼
??③ pom.xml 文件

07 常用Maven 命令
??① 注意:執(zhí)行與構建過程相關的Maven的命令時,,需要進入pom.xml所在目錄
???與構建過程相關:編譯,,測試,打包
??② 常用命令:
???(1)mvn clean:清理
???(2)mvn compile:編譯主程序
???(3)mvn test-compile:編譯測試主程序
???(4)mvn test:執(zhí)行測試
???(5)mvn package:打包
???(6)mvn install:安裝
???(7)mvn site:生成站點

08 關于聯(lián)網(wǎng)問題
??① Maven 的核心程序中僅僅定義了抽象的聲明周期,,但是具體的工作必須由特定的插件來完成,而插件本身并不包含在 Maven 的核心程序中,。
??② 當我們指定的 Maven 命令需要用到某些插件時,Maven 核心程序會首先到本地倉庫中查找,。
??③ 本地倉庫的默認位置:[系統(tǒng)用戶] \ .m2 \ repository
??④ Maven核心程序如果在本地倉庫中找不到需要的插件,,那么它會自動連接外網(wǎng)到中央倉庫下載。
??⑤ 如果此時無法連接外網(wǎng)下載,,則構建失敗。
??⑥ 修改默認本地倉庫的位置可以讓 Maven 核心程序到我們事先準備好的目錄下查找插件
????(1)找到 Maven 解壓目錄 \ conf \ settings.xml
????(2)在 setting.xml 文件中找到 localRepository 標簽
????(3)將<localRepository>/path/to/local/repo</localRepository>從注釋中取出
????(4)將標簽體內容修改為已經(jīng)準備好的 Maven 倉庫路徑,,如:
???????<localRepository> F:Maven </localRepository>
??執(zhí)行 mvn compile 命令會在 src 級目錄下生成 target 文件(含字節(jié)碼文件)
??執(zhí)行 mvn test-compile 命令會在 src 級目錄下生成 target 文件(含字節(jié)碼文件)
??執(zhí)行 mvn package命令會在 src 級目錄下生成target / *.jar 文件,,以及輔助文件和測試報告
??執(zhí)行 mvn test 命令會刪除 target 文件(含字節(jié)碼文件)

09 POM
??① 含義:Porject Object Model 項目對象模型
????DOM:Document Object Model
??② pom.xml 對于 Maven 工程是核心配置文件,與構建過程相關的一切設置都在這個文件中進行配置,。
????重要程度相當于 web.xml 對于動態(tài) Web工程

10 坐標
??① 數(shù)學中的坐標,,平面中的X、Y標識平面中的任何一點,,空間的X,、Y、Z標識空間中的任何一點
??② Maven的坐標
????使用下面三個向量在倉庫中唯一定位一個 Maven工程
????(1) groupid:公司或組織名倒序 + 項目名:<groupid>com.cxj.maven</groupid>
????(2) artfactid:模塊名:<artifactid>Hello</artifactid>
????(3) version:版本:<version>1.0.1</version>
??③ Maven工程的坐標與倉庫中路徑的對應關系,,各自對應

11 倉庫
??① 倉庫的分類
????(1) 本地倉庫:在當前計算機系統(tǒng)文件中,,為當前電腦上所有的 Maven 工程服務
????(2) 遠程倉庫:
??????a 私服:搭建在局域網(wǎng),為局域網(wǎng)范圍內的所有 Maven工程服務
??????b 中央倉庫:架設在Internet 上,,為全世界所有 Maven 工程服務
??????c 中央倉庫鏡像:架設在各個大洲,,為中央倉庫分擔流量,減輕中央倉庫的壓力,,同時更快響應用戶的請求
??② 倉庫中保存的內容
????(1) Maven 自身所需的插件
????(2) 第三方框架或工具的 jar 包,,(第一方是JDK,第二方是開發(fā)人員)
????(3) 我們自己開發(fā)的 Maven 工程

12 第二個 Maven 工程(RELEASE:穩(wěn)定版本,,SNAPSHOT:不穩(wěn)定版本)
??① 建 Maven 工程:Hello ,,HelloFriend
??② 在 HelloFriend 工程中引用 Hello工程中的類
??③ 在 HelloFriend 工程下的 pom.xml 文件中添加依賴
??<dependencies>
????<dependency>
??????<groupid>com.cxj.maven<groupid>
??????<artifactid>Hello</artifactid>
??????<version>1.0.0-SNAPSHOT</version>
??????<scop>compile</scop>
????</dependency>
??</dependencies>
??④ 進入 HelloFriend 工程的 pom.xml 目錄執(zhí)行 mvn compile 開始編譯
??⑤ 出現(xiàn)編譯失敗,無法解析依賴信息,。是因為 Hello 工程沒有 執(zhí)行 mvn install 安裝命令
??⑥ 因此先將 Hello 工程執(zhí)行 mvn install ,,再將 HelloFriend 工程執(zhí)行 mvn compile 即可

13 依賴
??① Maven 解析依賴信息時會到本地倉庫中查找被依賴的jar包
????對于我們自己開發(fā)的 Maven 工程,,使用 install 命令安裝后就可以進入倉庫
??② 依賴的范圍 <scop>:compile 、test,、provided
????(1) compile(如:spring-core)
???????是否對主程序有效:有效
???????是否對測試程序有效:有效
???????是否參與打包:參與
???????是否參與部署:參與
????(2) test(如:junit)
???????是否對主程序有效:無效
???????是否對測試程序有效:有效
???????是否參與打包:不參與
???????是否參與部署:不參與
????(3) provided:依賴一些特定的 API(不是開發(fā)人員寫的類,,如:servlet-api.jar,由服務器提供)
???????是否對主程序有效:有效
???????是否對測試程序有效:有效
???????是否參與打包:不參與
???????是否參與部署:不參與

14 生命周期:Clean,、Default,、Site
??①各個構建環(huán)節(jié)執(zhí)行的順序:不能打亂順序,必須按照既定的正確順序來執(zhí)行
????Default生命周期常用的階段:

validate
generate-sources
process-sources
generate-resources
process-resources??復制并處理資源文件,,至目標目錄,,準備打包
compile??編譯項目的源代碼
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources??復制并處理資源文件,至目標測試目錄
test-compile??編譯測試源代碼
process-test-classes
test??使用合適的單元測試框架運行測試,,這些測試代碼不會被打包或部署
prepare-package
package??接收編譯好的代碼,,打包成可發(fā)布的格式,如:JAR
pre-integration-test
integration-test

??② Maven 的核心程序中定義了抽象的生命周期,,生命周期中各個階段的具體任務是由插件來完成的,。
??③ Maven 核心程序為例更好的實現(xiàn)自動化構建,按照這一的特點
??④ 插件和目標
????(1) 生命周期的各個階段僅僅定義了要執(zhí)行的任務是什么
????(2) 各個階段和插件的目標是對應的
????(3) 相似的目標由特定的插件來完成
??? (4)可以將目標看作"調用插件功能的命令"

15 Eclipse 中設置 Maven 插件(eclipse中內置了Maven,,默認由自帶的Maven)
??①Window->preferences->Maven->Installations->Add :指定Maven 核心程序的位置,。
??②Window->preferences->Maven->User Settings :指定 conf / settings.xml 文件的位置,進而獲取本地倉庫的位置,。
??③ 基本操作
????(1) 創(chuàng)建 Maven 版的Java 工程
??????a. Window->Perspective->Customize Perspective->Menu Visibility->File->New->Maven Project,,將Maven Project加入到快捷鍵New中
??????b. New->Maven Project->勾選 " Create a simple project (skip archetype selection)",如不勾選,,則在下一步中勾選"maven-archetype-quickstart"
?????????輸入Group Id ,, Artifact Id,Version,,Package(jar,、war、pom),,確定finish
??????c. 改JDK版本,,手動改:,,,,,,自動改:打開settings.xml,,找到profiles 標簽,,加入如下配置

<profile>
??<id>jdk-1.7</id>
??<activation>
????<activeByDefault>true</activeByDefault>
????<jdk>1.7</jdk>
??</activation>
??<properties>
????<maven.compiler.source>1.7</maven.compiler.source>
????<maven.compiler.target>1.7</maven.compiler.target>
????<maver.compiler.compilerVersion>1.7</maven.comiler.compilerVersion>
??</properties>
</profile>

若不能識別,則提高Maven版本即可
???(2)創(chuàng)建 Maven 版的JavaWeb 工程
??????a. New->Maven Project->勾選 " Create a simple project (skip archetype selection)",,如不勾選,,則在下一步中勾選"maven-archetype-quickstart"
?????????輸入Group Id ,, Artifact Id,Version,,Package(jar,、war、pom),,確定finish
??????b. 右鍵工程-->Properties-->Project Facets-->去掉Dynamic Web Module-->Apply-->再勾選Dynamic Web Module-->
?????????點擊"Further configuration availbale..."-->在Content directory中輸入src/main/webapp
???(3)執(zhí)行 Maven 命令:run as-->再選擇響應的 Maven命令
???(4)手動創(chuàng)建的Maven 工程導入Eclipse 時,,需要選擇導入Maven Project,不能以Java 工程導入
??④ 在 setting.xml 文件中加入servlet-api.jar包依賴

<dependency>
??<groupid>javax<groupid>
??<artifactid>servlet-api</artifactid>
??<version>2.5</version>
??<scop>provided</scop>
</dependency>

16 依賴
??① 依賴的傳遞性,,好處:可以傳遞的依賴不必在每個模塊工程中都重復聲明,,在"最下面"的工程中依賴一次即可(<scop>compile</scop>,test和provided只提供給本項目使用,,不能傳遞)
????若項目 A 依賴與項目 B,,當在項目 B 中加入其它依賴時,項目 B 的運行環(huán)境中也會加入相應的依賴,,
??② 依賴的排除,,若項目A依賴與項目 B,當在項目 B 中加入其它依賴時,,若加入的依賴版本過低,,則需要排除,項目A需要自己加高版本依賴,,
如:在 A 的 pom.xml 文件中寫對 B 的依賴時,同時排除項目 B 中的 commons-logging-api 包

<dependency>
??<groupid>B<groupid>
??<artifactid>B</artifactid>
??<version>B</version>
??<scop>B</scop>
??<exclusions>
????<groupId>commons-logging</groupId>
????<artifactId>commons-logging</artifactId>
??</exclusions>
</denpendcy>

??③ A-->B-->C,,若項目 A 依賴項目 B,,項目 B依賴 項目 C,當項目C 和項目B 傳遞上來兩個版本不一致的junit-api.jar時,,最短路徑優(yōu)先
??④ A--B,,A--C,若項目A 依賴 項目B,,項目A 依賴 項目 C,,當項目B 和項目 C傳遞上來兩個版本不一致的junit-api.jar時,最先聲明者優(yōu)先(指dependency標簽的聲明順序)
??⑤ 依賴的原則:解決模塊工程之間的jar 包沖突問題
??⑥ 統(tǒng)一管理依賴的版本:使用 properties 標簽,。如:依賴的spring 包由很多同時它們的版本一致,,要修改時,手動注意修改,?,?如:

<properties>
??<atcxj.spring.version>4.0.0.RELEASE<atcxj.spring.version>??//自定義聲明的標簽:<atcxj.spring.version >,引用時:<version>&{atcxj.spring.version}</version>
??<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>??//編碼
</properties>
<dependencies>
??<dependency>
????<groupid>org.springframeword<groupid>
????<artifactid>spring-orm</artifactid>
????<version>&{atcxj.spring.version}</version>
??<dependency>
<dependency>
????<groupid>org.springframework<groupid>
????<artifactid>spring-web</artifactid>
????<version>&{atcxj.spring.version}</version>
??<dependency>
</dependencies>

??⑦ propeties 標簽并不只能用于聲明依賴的版本號,,凡是需要統(tǒng)一聲明后再引用的場合都可以使用,。

17 繼承
??① 現(xiàn)狀
????Hello依賴的junit:4.0
????HelloFriend依賴的junit:4.0
????MakeFriend依賴的junit:4.9
???由于 test 范圍的依賴不能傳遞,,所以必然會分散在各個模塊工程中,很容易造成版本不一致,。
??② 需求:統(tǒng)一管理各個模塊工程中對 junit 依賴的版本
??③ 解決思路:將junit 依賴統(tǒng)一提取到"父"工程中,,在子工程中聲明 junit 依賴時不指定版本,以父工程中統(tǒng)一設定的為準,,同時也便于修改,。
??④ 操作步驟
????(1) 創(chuàng)建一個 Maven 工程作為父工程,注意:打包方式為pom,,如:父工程中pom.xml 為:

<groupid>com.cxj.maven<groupid>
<artifactid>Parent</artifactid>
<version>0.0.2-SNAPSHOT</version>
<packaging>pom</packaging>

????(2) 在子工程中聲明對父工程的引用,,子工程中pom.xml 為:

<parent>??//<parent>標簽在<dependencies>標簽外部
  <groupid>com.cxj.maven<groupid>
  <artifactid>Parent</artifactid>
  <version>0.0.2-SNAPSHOT</version>
  <relativePath>../Parent/pom.xml</relativePath>??//以當前文件為基準的父工程pom.xml 文件的相對路徑
</parent>

????(3) 將子工程的坐標中與父工程中重復的內容刪除
????(4) 在父工程中統(tǒng)一管理 junit 的依賴

<dependencyManagement>
??<dependencies>
????<dependency>
??????<groupid>junit</groupid>
??????<artifactid>junit</artifactid>
??????<version>4.0</version>
??????<scop>test</scop>
????</dependency>
??</dependencies>
</dependencyManagement>

????(5) 在子工程中刪除junit 依賴的版本號部分,此時子工程中 junit 的版本就是父工程中管理的junit 版本,,若不刪除則使用的就是該 junit 版本

18 聚合(一鍵安裝各個模塊工程)
??① 使用情景:當工程模塊之間有依賴后,,執(zhí)行 mvn compile 時,需要被依賴的項目模塊提前執(zhí)行 mvn install
??② 配置方式:在一個"總的聚合工程" 中配置各個參與聚合的模塊

<modules>../Hello</modules>
<modules>../HelloFriend</modules>
<modules>../MakeFriends</modules>??//無先后順序

??③ 使用方式:在聚合工程的 pom.xml 文件上點右鍵-->run as -->maven install

19 自動部署:就是將項目打包,,然后存放到 tomcat 服務器運行,,在命令行中使用 mvn deploy

<build>??//配置當前工程構建過程中的特殊設置
|??<finalName>AtCxjWeb</finalName>
|??<plugins>??//配置構建過程中需要使用的插件
|??|??<plugin>
|??|??|??<groupId>org.codehaus.cargo</groupId>??//cargo 是一家專門 "啟動sevlet容器"的組織
|??|??|??<artifactId>cargo-maven2-pligin</artifactId>
|??|??|??<version>1.2.3</version>
|??|??|??<configurations>
|??|??|??|??<container>
|??|??|??|??|??<containerId>tomcat6x<containerId>
|??|??|??|??|??<home>D:\DevInstall\apache-tomcat-6.0.39</home>??//當前系統(tǒng)中容器的位置
|??|??|??|??</container>
|??|??|??|??<configuration>
|??|??|??|??|??<type>existing</type>
|??|??|??|??|??<home>D:\DevInstall\apache-tomcat-6.0.39</home>
|??|??|??|??|??<properties>
|??|??|??|??|????<cargo.servlet.port>8989</cargo-servlet-port>??//如果tomcat 端口為默認值8080則不必設置該屬性
|??|??|??|??|??</properties>
|??|??|??|??</configuration>
|??|??|??</configurations>
|??|??|??<executions>??//配置插件在什么情況下執(zhí)行
|??|??|??|??<execution>
|??|??|??|??|??<id>cargo-run</id>
|??|??|??|??|??<phase>install</phase>??//生命周期的階段
|??|??|??|??|??<goals>
|??|??|??|??|??|??<goal>run<goal>??//生命周期的目標
|??|??|??|??|??</goals>
|??|??|??|??</execution>
|??|??|??</executions>
|??|??</plugin>
|??</plugins>
</build>

20 查找依賴的網(wǎng)址:

https://mvnrepository.com

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多