Canvas之滑鼠滑動特效
Maven簡介
Maven是什麼:
-
Maven 的本質是一個專案管理工具,將專案開發和管理過程抽象成一個專案物件模型(POM)
-
POM(Project Object Model):專案物件模型
Maven的作用:
-
專案構建:提供標準的、跨平臺的自動化專案構建方式
-
依賴管理:方便快捷的管理專案依賴的資源(jar包),避免資源間的版本衝突問題
-
統一開發結構:提高標準的、統一的專案結構
下載與安裝
下載地址:http://maven.apache.org/download.cgi
Maven環境變數配置:
-
依賴Java,需要配置JAVA_HOME
-
設定MAVEN自身的執行環境,需要配置MAVEN_HOME
-
檢測環境配置結果 cmd 下 mvn
Maven基礎概念
倉庫
-
倉庫:用於儲存資源,包含各種jar包
-
倉庫分類:
-
本地倉庫:自己電腦上儲存資源的倉庫,連結遠端倉庫獲取資源
-
遠端倉庫:非本機電腦上的倉庫,為本地倉庫提供資源
-
中央倉庫:Maven團隊維護,儲存所有資源的倉庫
-
私服:部門/公司範圍內儲存資源的倉庫,從中央倉庫獲取資源
-
-
-
私服的作用:
-
儲存具有版權的資源,包含購買或自主研發的jar
-
中央倉庫中的jar都是開源的,不能儲存具有版權的資源
-
-
一定範圍內共享資源,僅對內部開放,不對外共享
-
座標
什麼是座標:
-
Maven中的座標用於描述倉庫中資源的位置
-
Maven座標主要組成:
-
groupId:定義當前Maven專案隸屬組織名稱(通常是域名反寫,例如:org.mybatis)
-
artifactId:定義當前Maven專案名稱(通常是模組名稱,例如CRM、SMS)
-
version:定義當前專案版本號
-
packaging:定義該專案的打包方式
Maven座標的作用:
-
使用唯一標識,唯一性定位資源位置,通過該標識可以將資源的識別與下載工作交由機器完成
本地倉庫配置
-
Maven啟動後,會自動儲存下載的資源到本地倉庫
-
預設位置:<localRepository>${user.home}/.m2/repository</localRepository>
當前目錄位置為登入使用者名稱所在目錄下的.m2資料夾中
-
自定義位置:<localRepository>D:\JavaEE\Maven\repository</localRepository>
當前目錄位置為D:\JavaEE\Maven\repository資料夾中
-
映象倉庫配置
-
在setting檔案中配置阿里雲映象倉庫
1 <mirrors> 2 <!-- 配置具體的倉庫的下載映象 --> 3 <mirror> 4 <!-- 此映象的唯一識別符號,用來區分不同的mirror元素 --> 5 <id>nexus-aliyun</id> 6 <!-- 對哪種倉庫進行映象,簡單說就是替代哪個倉庫 --> 7 <mirrorOf>central</mirrorOf> 8 <!-- 映象名稱 --> 9 <name>Nexus aliyun</name> 10 <!-- 映象URL --> 11 <url>http://maven.aliyun.com/nexus/content/groups/public</url> 12 </mirror> 13 </mirrors>
第一個Maven專案(手動建立)
Maven工程目錄結構
-
在src同層目錄下建立pom.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project 3 xmlns="http://maven.apache.org/POM/4.0.0" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 7 <modelVersion>4.0.0</modelVersion> 8 9 <groupId>com.itTom</groupId> 10 <artifactId>project-java</artifactId> 11 <version>1.0</version> 12 <packaging>jar</packaging> 13 14 <dependencies> 15 <dependency> 16 <groupId>junit</groupId> 17 <artifactId>junit</artifactId> 18 <version>4.12</version> 19 </dependency> 20 </dependencies> 21 22 </project>
Maven專案構建命令
-
Maven構建命令使用mvn開頭,後面新增功能引數,可以一次執行多個命令,使用空格分隔
-
編譯:mvn compile
-
清理:mvn clean
-
測試:mvn test
-
打包:mvn package
-
安裝到本地倉庫:mvn install
第一個Maven專案(外掛建立)
-
建立工程
1 mvn archetype:generate 2 -DgroupId={project-packaging} 3 -DartifactId={project-name} 4 -DarchetypeArtifactId=maven-archetype-quickstart 5 -DinteractiveMode=false
-
建立java工程
1 mvn archetype:generate -DgroupId=com.itTom 2 -DartifactId=java-project 3 -DarchetypeArtifactId=maven-archetype-quickstart 4 -Dversion=0.0.1-snapshot 5 -DinteractiveMode=false
-
建立web工程
1 mvn archetype:generate -DgroupId=com.itTom 2 -DartifactId=web-project 3 -DarchetypeArtifactId=maven-archetype-webapp 4 -Dversion=0.0.1-snapshot 5 -DinteractiveMode=false
第一個Maven專案(IDEA生成)
配置Maven:新建web工程
1 <?xml version="1.0" encoding="UTF-8"?> 2 <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"> 3 <!--指定pom的模型版本--> 4 <modelVersion>4.0.0</modelVersion> 5 <!--打包方式,web工程打包為war,Java工程打包為jar--> 6 <packaging>war</packaging> 7 8 <name>web01</name> 9 <!--組織id--> 10 <groupId>com.itTom</groupId> 11 <!--專案id--> 12 <artifactId>web01</artifactId> 13 <!--版本號:release,SNAPSHOT--> 14 <version>1.0-SNAPSHOT</version> 15 16 <!--設定當前工程的所有依賴--> 17 <dependencies> 18 <dependency> 19 <groupId>junit</groupId> 20 <artifactId>junit</artifactId> 21 <version>4.12</version> 22 <scope>test</scope> 23 </dependency> 24 </dependencies> 25 26 <!--構建--> 27 <build> 28 <!--設定外掛--> 29 <plugins> 30 <!--具體的外掛配置--> 31 <plugin> 32 <groupId>org.apache.tomcat.maven</groupId> 33 <artifactId>tomcat7-maven-plugin</artifactId> 34 <version>2.2</version> 35 </plugin> 36 </plugins> 37 </build> 38 39 </project>
依賴管理
依賴配置
-
依賴指當前專案執行所需要的jar,一個專案可以設定多個依賴
-
格式:
1 <!--設定當前工程的所有依賴--> 2 <dependencies> 3 4 <!--設定具體的依賴--> 5 <dependency> 6 <!--依賴所屬群體id--> 7 <groupId>junit</groupId> 8 <!--依賴所屬專案id--> 9 <artifactId>junit</artifactId> 10 <!--依賴版本號--> 11 <version>4.12</version> 12 </dependency> 13 14 </dependencies>
依賴傳遞
-
依賴具有傳遞性
-
直接依賴:在當前專案中通過依賴配置建立的依賴關係
-
間接依賴:被資源的資源如果依賴其他資源,當前專案間接依賴其他資源
-
依賴傳遞衝突問題:
-
路徑優先,當依賴中出現相同的資源時,層級越深,優先順序越低,層級越淺,優先順序越高
-
宣告優先:當資源在相同層級被依賴時,配置順序靠前的覆蓋配置順序靠後的
-
特殊優先:當同級配置了相同資源的不同版本,後配置的覆蓋先配置的
可選依賴
-
可選依賴指對外隱藏當前依賴的資源 -- 不透明
1 <dependency> 2 <groupId>junit</groupId> 3 <artifactId>junit</artifactId> 4 <version>4.12</version> 5 <optional>true</optional> 6 </dependency>
排除依賴
-
排除依賴指主動斷開依賴的資源,被排除的資源無需指定版本 -- 不需要
1 <dependency> 2 <groupId>com.itTom</groupId> 3 <artifactId>java02</artifactId> 4 <version>1.0-SNAPSHOT</version> 5 <exclusions> 6 <exclusion> 7 <groupId>junit</groupId> 8 <artifactId>junit</artifactId> 9 </exclusion> 10 </exclusions> 11 </dependency>
依賴範圍
-
依賴的jar預設情況可以在任何地方使用,可以通過scope標籤設定其作用範圍
-
作用範圍
-
預設:哪都能用
-
主程式範圍內有效(mian資料夾範圍內)
-
測試程式範圍內有效(test資料夾範圍內)
-
是否參與打包(package指令範圍內)
-
scope | 主程式碼 | 測試程式碼 | 打包 | 範例 |
---|---|---|---|---|
compile(預設) | ✔ | ✔ | ✔ | log4j |
test | ✔ | junit | ||
provided | ✔ | ✔ | servlet-api | |
runtime | ✔ | jdbc |
依賴範圍傳遞性(瞭解)
-
帶有依賴範圍的資源在進行傳遞時,作用範圍將受到影響
生命週期與外掛
專案構建生命週期
-
Maven對專案構建的生命週期劃分為3套
-
clean:清理工作
-
default:核心工作,例如編譯、測試、打包、部署等
-
site:產生報告,釋出站點等
-
clean生命週期
pre-clean 執行一些需要在clean之前完成的工作
clean 移除所有上一步構建生成的檔案
post-clean 執行一些需要在clean之後立刻完成的工作
default構建生命週期
生命週期階段 描述
validate(校驗) 校驗專案是否正確並且所有必要的資訊可以完成專案的構建過程。
initialize(初始化) 初始化構建狀態,比如設定屬性值。
generate-sources(生成原始碼) 生成包含在編譯階段中的任何原始碼。
process-sources(處理原始碼) 處理原始碼,比如說,過濾任意值。
generate-resources(生成資原始檔) 生成將會包含在專案包中的資原始檔。
process-resources (處理資原始檔) 複製和處理資源到目標目錄,為打包階段最好準備。
compile(編譯) 編譯專案的原始碼。
process-classes(處理類檔案) 處理編譯生成的檔案,比如說對Java class檔案做位元組碼改善優化。
generate-test-sources(生成測試原始碼) 生成包含在編譯階段中的任何測試原始碼。
process-test-sources(處理測試原始碼) 處理測試原始碼,比如說,過濾任意值。
generate-test-resources(生成測試資原始檔) 為測試建立資原始檔。
process-test-resources(處理測試資原始檔) 複製和處理測試資源到目標目錄。
test-compile(編譯測試原始碼) 編譯測試原始碼到測試目標目錄.
process-test-classes(處理測試類檔案) 處理測試原始碼編譯生成的檔案。
test(測試) 使用合適的單元測試框架執行測試(Juint是其中之一)。
prepare-package(準備打包) 在實際打包之前,執行任何的必要的操作為打包做準備。
package(打包) 將編譯後的程式碼打包成可分發格式的檔案,比如JAR、WAR或者EAR檔案。
pre-integration-test(整合測試前) 在執行整合測試前進行必要的動作。比如說,搭建需要的環境。
integration-test(整合測試) 處理和部署專案到可以執行整合測試環境中。
post-integration-test(整合測試後) 在執行整合測試完成後進行必要的動作。比如說,清理整合測試環境。
verify (驗證) 執行任意的檢查來驗證專案包有效且達到質量標準。
install(安裝) 安裝專案包到本地倉庫,這樣專案包可以用作其他本地專案的依賴。
deploy(部署) 將最終的專案包複製到遠端倉庫中與其他開發者和專案共享。
site構建生命週期
pre-site 執行一些需要在生成站點文件之前完成的工作
site 生成專案的站點文件
post-site 執行一些需要在生成站點文件之後完成的工作,並且為部署做準備
site-deploy 將生成的站點文件部署到特定的伺服器上
外掛
-
外掛與生命週期內的階段繫結,在執行到對應的生命週期時執行對應的外掛功能
-
-
通過外掛可以自定義其他功能