Maven學習筆跡
Maven需要了解的
Maven是什麼?
Maven是一個專案管理工具,它包含了一個項 目物件模型 (Project Object
Model),一組標準集合,一個專案生命週期(Project Lifecycle),一個依賴管理系統(Dependency
Management System),和用來執行定義在 生命週期階段(phase)中外掛(plugin)目標(goal)的邏輯。
當你使用Maven的時候,你 用一個明確定義的專案物件模型來描述你的專案,然後 Maven 可以應用橫切的邏輯,
這些邏輯來自一組共享的(或者自定義的)外掛。
約定優於配置
約定優於配置是一個簡單的概念。 系統,類庫,框架應該假定合理的預設值,而非要 求提供不必要的配置。
一個“專案”的概念模型
Maven 維護了一個專案的模型,你不僅僅需要把原始碼編譯成位元組碼,你還需要開發軟 件專案的描述資訊,為專案指定一組唯一的座標。你要描述專案的的屬性。專案的許可 證是什麼?誰開發這個專案,為這個專案做貢獻?這個專案依賴於其它什麼專案沒有? Maven不僅僅是一個“構建工具”,它不僅僅是在類似於 make 和 Ant 的工具的基礎上 的改進,它是包含了一組關於軟體專案和軟體開發的語義規則的平臺。這個基於每一個 專案定義的模型實現瞭如下特徵:
依賴管理 由於專案是根據一個包含組識別符號,構件識別符號和版本的唯一的座標定義的。項 目間可以使用這些座標來宣告依賴。
遠端倉庫 和專案依賴相關的,我們可以使用定義在專案物件模型(POM)中的座標來建立 Maven 構件的倉庫。
全域性性構建邏輯重用 外掛被編寫成和專案模型物件(POM)一起工作,它們沒有被設計成操作某一個 已知位置的特定檔案。一切都被抽象到模型中,外掛配置和自定義行為都在模型 中進行。
工具可移植性/整合 像 Eclipse,NetBeans,和 InteliJ 這樣的工具現在有共同的地方來找到專案 的資訊。在 Maven 出現之前,每個 IDE 都有不同的方法來儲存實際上是自定義 專案物件模型(POM)的資訊。Maven 標準化了這種描述,而雖然每個 IDE 仍然 繼續維護它的自定義專案檔案,但這些檔案現在可以很容易的由模型生成。
便於搜尋和過濾構件 像 Nexus 這樣的工具允許你使用儲存在 POM 中的資訊對倉庫中的內容進行索引 和搜尋。
一個簡單的 Maven pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>my-project</artifactId>
<version>1.0</version>
</project>
• Maven 擁有約定,因為你遵循了約定,它已經知道你的原始碼在哪裡。它把字 節碼放到 target/classes ,然後在
target 生成一個 JAR 檔案。 • Maven 是宣告式的。你需要做的只是建立一個 pom.xml 檔案然後將原始碼放
到預設的目錄。Maven 會幫你處理其它的事情。 • Maven 有一個生命週期,當你執行 mvn install
的時候被呼叫。這條命令告 訴 Maven 執行一系列的有序的步驟,直到到達你指定的生命週期。遍歷生命 週期旅途中的一個影響就是,Maven
執行了許多預設的外掛目標,這些目標完 成了像編譯和建立一個 JAR 檔案這樣的工作。
安裝和執行Maven
maven是一堆jar包,其中包含了可執行jar,需要java環境(jdk)
C:\Users\$>java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
Maven下載地址
Maven:http://maven.apache.org/ download.html.
安裝maven ,配置一下環境變數就好了
windows
MAVEN_HOME
D:\SoftwareDevelopmentEnvironment\JavaSoftwareEnvironment\maven\MavenHomeDirectory\apache-maven-3.3.9
PATH
%MAVEN_HOME%\bin
unix OSX
$ vim profile
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:PATH
/usr/local % ln -s maven-3.3.9 maven
驗證Maven安裝
$ mvn -v
Maven 3.3.9
D:\SoftwareDevelopmentEnvironment\JavaSoftwareEnvironment\maven\MavenHomeDirectory\apache-maven-3.3.9 的目錄
2020/12/20 17:36 <DIR> .
2020/12/20 17:36 <DIR> ..
2020/12/20 17:36 <DIR> bin Maven核心的JAR檔案(maven-2.0.9-uber.jar)
2020/12/20 17:36 <DIR> boot 包含了一個負責建立Maven執行所需要的類裝載器的JAR檔案
安裝和執行Maven(classwords-1.1.jar
2020/12/20 17:36 <DIR> conf 全域性配置
2020/12/20 17:36 <DIR> lib jar庫
2015/11/10 11:44 19,335 LICENSE Apache Maven的軟體許可證
2015/11/10 11:44 182 NOTICE
2015/11/10 11:38 2,541 README.txt
3 個檔案 22,058 位元組
6 個目錄 321,002,819,584 可用位元組
D:\SoftwareDevelopmentEnvironment\JavaSoftwareEnvironment\maven\MavenHomeDirectory\apache-maven-3.3.9\bin>mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\SoftwareDevelopmentEnvironment\JavaSoftwareEnvironment\maven\MavenHomeDirectory\apache-maven-3.3.9\bin\..
Java version: 1.8.0_201, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_201\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
使用者相關配置和倉庫
使用IDEA時候使用者目錄
在~/.m2目錄下有:
~/.m2/settings.xml 該檔案包含了使用者相關的認證,倉庫和其它資訊的配置,用來自定義Maven的行 為。
~/.m2/repository/ 該目錄是你本地的倉庫。當你從遠端Maven倉庫下載依賴的時候,Maven在你本地 倉庫儲存了這個依賴的一個副本。
Maven Help外掛
help:active-profiles 列出當前構建中活動的Profile(專案的,使用者的,全域性的)。
help:effective-pom 顯示當前構建的實際POM,包含活動的Profile。
help:effective-settings 列印出專案的實際settings, 包括從全域性的settings和使用者級別settings繼承的 配置。
相關文章
- maven 學習筆記Maven筆記
- Javaxuex學習筆記---MavenJava筆記Maven
- Maven 學習筆記一Maven筆記
- Maven 學習筆記——Maven和Eclipse(2)Maven筆記Eclipse
- Maven 學習筆記——Maven環境配置(1)Maven筆記
- Git和Maven的學習筆記GitMaven筆記
- Maven 學習Maven
- Maven學習Maven
- Maven學習--profileMaven
- Maven學習總結Maven
- 學習Maven IntelliJMavenIntelliJ
- maven 學習總結(一)——Maven入門Maven
- maven 學習總結(四)——Maven核心概念Maven
- Maven 學習筆記——將普通的Java專案轉換成Maven專案(3)Maven筆記Java
- 學習筆記——Maven 如何處理傳遞性依賴筆記Maven
- WPF 筆跡演算法 從點集轉筆跡輪廓演算法
- maven 學習總結(六)——Maven與Eclipse整合MavenEclipse
- maven 學習總結(二)——Maven專案構建過程練習Maven
- maven 學習總結(三)——使用Maven構建專案Maven
- maven 學習總結(九)——使用Nexus搭建Maven私服Maven
- maven一站式學習Maven
- maven學習(中)- 私服nexus搭建Maven
- maven學習(上)- 基本入門用法Maven
- Maven 筆記Maven筆記
- maven 學習總結(八)——使用Maven構建多模組專案Maven
- numpy的學習筆記\pandas學習筆記筆記
- 《JAVA學習指南》學習筆記Java筆記
- maven學習總結(七)——eclipse中使用Maven建立Web專案MavenEclipseWeb
- IT學習筆記筆記
- 學習筆記筆記
- maven使用筆記Maven筆記
- 強化學習-學習筆記3 | 策略學習強化學習筆記
- 記canvas畫筆筆跡的多次優化過程Canvas優化
- 【學習筆記】數學筆記
- maven 學習總結(五)——聚合與繼承Maven繼承
- Maven學習總結(42)——Maven多模組構建中常用的引數Maven
- kitten 學習教程(一) 學習筆記筆記
- 學習筆記----圖論學習中筆記圖論