Maven Tutorial Hsuan-Ju Lin
Maven TutorialHsuan-Ju Lin
Maven的三個好用之處• Phrase LifeCycle & Maven Plugin•Dependency & local repository• Archetype for template project
Maven profile in pom.xml• <groupId>:確認maven專案的公司或組織名,儲存在
repository 時,會用 groupId做為資料夾的層次結構• <artifactId>:確定maven專案名稱 • <version>:確定maven專案的版本
Maven Plugin for building• 和 Ant 功能相同,都是管理 java 檔的建置與發布,但 Ant 要自己定義…
1. 專案架構2. goal 與 java 命令的對應• 優點:自由度高
• Maven:1. 有固定的檔案放置方式,沒像 Ant 那樣,能自由設計檔案的擺放方式2. 但相對的, Maven 將專案需要的 phrase(Test, install, deploy…) 與 java 命令的對應都寫好了!我們只需要:
1. 在 pom.xml 使用 maven-plugin ,指定想要執行的 phrase ( 選擇性,沒設定會使用maven 預設 )
2. 調整 phrase 的設定 ( 選擇性,沒設定會使用 maven 預設 )3. 執行 Goal , Ex. mvn install goal
Maven Plugin & project phrase•專案的每個階段 (phrase),所需要的Maven plugin大部份都有了!• https://maven.apache.org/plugins/index.html
Maven Plugin Use• https://maven.apache.org/plugins/index.html
點擊左邊欄的 example查看教學
Maven plug-in LifeCycle• 專案生命週期• phrase 是有順序性的• Ex. 當執行 mvn test 時,maven 會將validate, compile的階段先跑過。
local repository• Maven默認將 local repository建立在~/.m2/repository ,可以到 maven conf 文件修改設定。• Maven會在本地端建立 local repository, local repository作用 :1. 存放第三方依賴 (jar檔 ),Maven會根據 pom.xml所標注的包名下載 jar檔和其相依檔到 local repository,以後就從
local repository尋找。2. 存放第三方 archetype3. 存放公司內部自己的釋出的 jar檔或 archetype• 開發者可以用 mvn install 將自己專案的 jar 檔儲存到 local
repository• 開發者可以用以下方式將自己專案的 archetype儲存到 local
repository1. mvn clean archetype:create-from-project2. 到 target/generated-sources/archetype資料夾3. mvn clean install 儲存到 local repository
Maven dependencies download
尋找 jar/ archetype
尋找 jar/ archetype
What is archetype?• Archetype像是專案的模板,包含建立專案後要做的一切基本文件設定和套件依賴準備等…•建立 Archetype的優點:1. 公司將自己客製化的模板儲存在 local repository,當員工要建立新專案時,直接用此模板 create一個新專案即可,不需要再自己更動設定檔。2. 將常用的專案設定創建成 archetype並儲存於 local repository,節省時間一直做同一件事。
創建 /使用 archetype:• 創建
• 開發者可以用以下方式將自己專案的 archetype儲存到 local repository1. mvn clean archetype:create-from-project2. 到 target/generated-sources/archetype資料夾3. mvn clean install 儲存到 local repository
• 使用• mvn archetype:generate –DgroupId=${自訂 group} –DartifactId=${自訂
projectName} – DarchetypeGroupId=${archetypeGroupId}– DarchetypeArtifactId=${archetypeArtifactId} – DarchetypeVersion=${archetypeVersion} – DinteractiveMode=false (不要互動模式 )
• 查找 remote maven repository的 archetype• https://maven.apache.org/archetypes/