Maven 簡介
Maven統(tǒng)一開發(fā)規(guī)范與工具投储;統(tǒng)一管理jar包
Maven是一個項目管理工具,它包含了一個項目對象模型 POM(Project Object Model)睹簇,一組標準集合驶悟,一個項目生命周期(Project Lifecycle),一個依賴管理系統(tǒng)(Dependency Management System)竹揍,和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯敬飒。
POM :?
項目配置文件,POM 包含的項目是使用 Maven 來構建的芬位,它用來包含各種配置信息无拗。POM 也包含了目標和插件。在執(zhí)行任務或目標時昧碉,Maven 會使用當前目錄中的 POM英染。它讀取POM得到所需要的配置信息,然后執(zhí)行目標被饿。多項目pom.xml具有繼承税迷、聚合和依賴等關系
坐標:
構件的唯一標識符,元素有 groupId, artifactId, version, packaging, classifier
< groupId>cn.com.mybook</groupId> ? ? ? ?//模塊化概念锹漱,定義當前項目所屬組名箭养,通常與域名反向一一對應
<artifactId>hello-world</artifactId> ? // 定義項目中的一個Maven項目(模塊),默認生成的構件以artifactId開頭哥牍,例如??hello-world.jar
?<version>0.1.0-SNAPSHOT</version> ?//Maven項目當前所屬的版本
<packaging> jar</packaging> ?//打包方式毕泌,默認為jar,也可為pom, war,xml等 嗅辣,為可選項
生命周期:
clean (構建時進行清理)?
default (構建核心部分:編譯撼泛、測試、打包澡谭、部署) ??
site(生成項目報告)
約定:?
?pom: 項目根目錄下 ? ? ? 項目處理邏輯: /src/main/java ? ? ?項目測試代碼: /src/test/java
依賴管理:
?jar包由groupId愿题、artifactId、version等元素定位
倉庫: ? ??
依賴包(構件、項目)的管理潘酗,含本地倉庫和遠程倉庫
(1)本地倉庫
用于存儲所有項目的依賴關系(插件jar和其他文件杆兵,這些文件被Maven下載)到本地文件夾。默認為: user_home/.m2/repository
在Maven_home/conf/settings.xml 修改localRepository可以存在其他目錄下仔夺,示例如下:
(2)中央倉庫?
Maven社區(qū)提供的資源庫琐脏,不需要配置。中央倉庫:http://repo1.maven.org/maven2 缸兔;Maven項目建立后日裙,會檢查pom.xml文件,以確定哪些依賴下載惰蜜,首先搜索本地倉庫獲取資源昂拂,若沒有找到,會在默認的Maven中央倉庫中查找下載抛猖,目前中央倉庫定向到?http://search.maven.org/
(3)遠程倉庫
Maven提供遠程倉庫概念格侯,這是開發(fā)人員的自定義庫包含所需的庫文件或其他項目 jar 文件,默認情況下樟结,Maven可從Maven中央倉庫下載所有依賴關系。但是精算,有些庫丟失在中央存儲庫瓢宦,只有在Java.net或JBoss的儲存庫遠程倉庫中能找到』矣穑可將Java.net和JBoss遠程倉庫信息添加到pom.xml文件中
私服(Nexus):?
https://nexus.opendaylight.org/
https://nexus.opendaylight.org/content/repositories/opendaylight.release/
https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/
Maven倉庫軟件構建流程
創(chuàng)建項目
1. ?Maven 環(huán)境:
? ? ?http://maven.apache.org/download.html? ?環(huán)境變量配置及安裝
? ? 系統(tǒng)環(huán)境:Ubuntu 16.04
? ? 軟件環(huán)境:jdk 1.8 ? ?maven 3.3.9 ? OpenDaylight Carbon SR2 ? ?
? ? ? ? ? ? ? ? ? ? ? ?Mininet ? ?Eclipse/IntelliJ IDEA
? ? 倉庫環(huán)境: 替換 user_home/.m2/settings.xml 為?
? ? ? ? ? ? ? ? ? ? ? ? ?https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml
2. 生成項目骨架 :
? ?mvn archetype:generate
? ?archetype 原型快建驮履,以Hello world為例,在當前目錄下構建該項目:
mvn archetype:generate?
- DarchetypeGroupId=org.opendaylight.controller?
- DarchetypeArtifactId=opendaylight-startup-archetype
- DarchetypeRepository= https://nexus.opendaylight.org/content/repositories/opendaylight.release/ ?
- DarchetypeCatalog=remote ?
- DarchetypeVersion=1.3.2-Carbon?
實際是運行插件 maven-archetype-plugin (artifactId)廉嚼,格式為 groupId:archetypeId:version:goal?玫镐, 隸屬于maven官方插件,groupId為 org.apache.maven.plugins怠噪,其中 https://nexus.opendaylight.org/content/repositories/opendaylight.release/ ?為發(fā)行版ODL倉庫
注: ?Maven 3 ? ? ?mvn ?archetype:generate
? ? ? ? ? Maven 2 ? ? ?mvn ?org.archetype.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
3. 編譯項目:
cd hello-world
ls
artfactacts/ ? ?cli/ ? deploy-site/ ? features/ ? ?impl/ ? ?it/ ? ?karaf/ ? ?pom.xml
mvn clean install ?-DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true
4. 編譯成功恐似,可啟動控制器,項目骨架構建成功
5. 實現(xiàn)Hello world RPC
? ? ? ?https://github.com/vanfence/ODL
推薦:
Maven實戰(zhàn) [D]
https://docs.opendaylight.org/en/stable-carbon/developer-guide/controller.html#
https://wiki.opendaylight.org/view/Main_Page