Maven懶人包(觀念)

傑克-avatar-img
發佈於MAVEN
更新於 發佈於 閱讀時間約 13 分鐘

前言

Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of infomation.
Apache Maven是一種軟體專案管理和解析工具。根據專案物件模型模型(POM)的概念,Maven可以管理專案從構建到報告和文件。


有時候我很難從原文網站去理解、了解一件事情,因為他們廢話太多了
直接進入主題


觀念

Maven Lifecycle and phase and goal

Maven的生命週期Lifecycle只有三個
Clean → Default → Site
每個生命週期都有各自步驟Phase
如果只想要執行某一段步驟Phase,你必須指定goal


Clean

    pre-clean  清理之前
    clean  清理
    post-clean 清理之後

Default

    validate 驗證所有的項目是否正確
    initialize 初始化,例如設置屬性或創建目錄
    generate-sources 產生sourceCode
    process-sources    處理sourceCode 過濾一些資料
    generate-resources 產生package資源檔案
    process-resources 複製資源檔案放入package的目錄中
    compile 開始編譯
    process-classes 產生 bytecode,例如class
    generate-test-sources 產生testCase code
    process-test-sources 處理testCase sourceCode 過濾一些資料
    generate-test-resources 產生 testCase package資源檔案
    process-test-resources 複製資源檔案放入測試的目錄中
    test-compile 開始testCase編譯
    process-test-classes 產生 testcase bytecode,例如class
    test 開始測試,這些東西不該被打包
    prepare-package    開始打包
    package 根據參數決定打包為war或是jar
    pre-integration-test 準備做整合測試,如整合測試所需的環境。
    integration-test 整合測試,如有必要 deploy the package to test
    post-integration-test 清潔環境
    verify 驗證package完整性以及品質
    install 安裝到本地的repository
    deploy 安裝到release目錄

Site
    pre-site
    site
    post-site
    site-deploy

執行maven的示範

mvn org.apache.maven.plugins:maven-clean-plugin:2.5:clean

在第一個部分 org.apache.maven.plugins 代表 gorupId,
在第二個部分 maven-clean-plugin 代表 artifactId,
在第三個部分 2.5 代表 version,
在第四個部分 clean 代表 Goal。(goal出現了!)

ex: mvn org.apache.maven.plugins:maven-clean-plugin:2.5:clean

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.inject.internal.cglib.core.$ReflectUtils$1 (file:/usr/share/maven/lib/guice.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of com.google.inject.internal.cglib.core.$ReflectUtils$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------------< tw.com.jack:SpringBootDemo >---------------------
[INFO] Building SpringBootDemo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-cli) @ SpringBootDemo ---
[INFO] Deleting /home/jackchen/download/SpringBootDemo/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.646 s
[INFO] Finished at: 2022-07-29T15:21:46+08:00
[INFO] ------------------------------------------------------------------------

當然可以簡化成這樣,一目了然

mvn clean

以下我以簡化方式表達maven的用途

ex 0: 想要掠過testCase

mvn clean package -DskipTests

ex 1:  清除跟編譯JAR檔,jar 檔放在/home/xxxx/download/SpringBootDemo/target

mvn clean package


ex2:  清除跟編譯JAR檔跟執行,跟intelliJ run application 有同等效果

mvn clean package spring-boot:run
....
.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::                (v2.7.2)
......
[  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
.....
^C[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  44.548 s
[INFO] Finished at: 2022-07-29T15:31:10+08:00
[INFO] ------------------------------------------------------------------------

ex3: 透過maven 上版到測試機,一定會出錯,因為我沒有在pom.xml 指定deploy的對象

mvn site:deploy

ex4: 透過maven 安裝到本機

/home/xxxx/.m2/repository/tw/com/jack/SpringBootDemo/0.0.1-SNAPSHOT/SpringBootDemo-0.0.1-SNAPSHOT.jar

mvn install

ex5: 透過maven 安裝到nexus

這部份細節流到nexus篇再說

mvn deploy:deploy-file
-Durl="https://<nexusURL>/repository/privatehosted"
-DgroupId=tw.com.jack
-DartifactId=SpringBootDemo
-Dversion=1.7
-Dpackaging=jar
-DgeneratePom=true
-DrepositoryId=<RepositoryId>
#先在Setting指定帳號密碼
-s settings.xml -DUSERNAME_VAR=JACK -DPASSWORD_VAR=SuperJack

ex6: 不想要每次都線上下載dependency jar

mvn -o <指令>

ex7: 分析專案dependency jar 有哪些依存性

mvn dependency:tree

ex8: 檢查Repositories清單

mvn dependency:list-repositories

ex9: 檢查maven執行時的settings參數

mvn help:effective-settings

ex10: 檢查maven執行時的系統變數

mvn help:system

ex11: 啟動SpringBoot並特別指定SpringBoot yml參數

mvn spring-boot:run –Dspring-boot.run.jvmArguments="-Dserver.port=9092"

ex12: 尋找最新的專案依存Jar的版次並更新版次

mvn versions:update-child-modules

ex13: 指定profile

mvn -P<profileName>

後述

透過指令的敘述,可以清楚maven在做什麼,就像前言所述,編譯、打包、產生報告、上測試機、或是更細部的操作例如set version、放上git Server、分析等…下次我們開始從pom.xml 跟Setting.xml 介紹,讓大家更了解maven




留言
avatar-img
留言分享你的想法!
avatar-img
傑克的沙龍
0會員
4內容數
「不要從輪子開始打造一台汽車」SpringBoot提供多樣化後端整合平台,從Security到Restful,從Controller到Repositories,從NotSQL到Relational DB,本篇一把手慢慢帶你深入這個一統江湖的超級幫派,少走許多冤枉路,打不過就加入,歡迎來到世界最大的幫派組織
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
建立Maven專案 於pom.xml設定Spring Boot <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
Thumbnail
建立Maven專案 於pom.xml設定Spring Boot <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
前年第一次藉公司機會,參加了DevOpsDay的活動。雖然devOps一詞各自表述,大多狀況還是偏向維運會遇到的技術為主,做為平時開發、跟使用者訪談需求的工作內容來說,參加聚會如果沒有一定的知識,對講者所提到的狀況比較難有共鳴...
Thumbnail
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
Thumbnail
學習Spring Boot是Java工程師必備技能,文章分享瞭如何自學並快速上手Spring Boot開發,包括架構、開發工具、專案建立以及實作過程。
Thumbnail
這是 2016 年的舊文重新整理,這幾年應該很少聽到軟體生命週期管理了,裡面的部分概念被其他更夯的詞取代了,像是 DevOps,所以我在一開頭便選了張比較接近潮流的圖片,不過說真的,在這個領域,常常有很多新名詞出現,但真正落實的又有多少呢?
Thumbnail
這是 2016 年的舊文重新整理,這幾年應該很少聽到軟體生命週期管理了,裡面的部分概念被其他更夯的詞取代了,像是 DevOps,所以我在一開頭便選了張比較接近潮流的圖片,不過說真的,在這個領域,常常有很多新名詞出現,但真正落實的又有多少呢?
Thumbnail
相信很多初學者學python的原因,不外乎語法簡單、好上手、重點是有很多現成的套件可以玩。那麼,Java呢?有!當然有!而且還多到你不知道該選哪個好! 今天的文章主要示範如何在vscode新建立Java 的maven專案,並且透過maven安裝這些額外的套件(依賴)
Thumbnail
相信很多初學者學python的原因,不外乎語法簡單、好上手、重點是有很多現成的套件可以玩。那麼,Java呢?有!當然有!而且還多到你不知道該選哪個好! 今天的文章主要示範如何在vscode新建立Java 的maven專案,並且透過maven安裝這些額外的套件(依賴)
Thumbnail
今天來介紹 vue 的生命週期,什麼是生命週期呢?講簡單一點就是從你用瀏覽器打開網頁開始,到網頁內的元件一個一個生成,到整個完整的網頁建立的過程就叫生命週期,完整過程如下圖 是不是眼花撩亂啊?讓我簡化一下,其實主要順序就是如下圖 在加上 setup 語法糖的 script 標籤內做的事相當於在 be
Thumbnail
今天來介紹 vue 的生命週期,什麼是生命週期呢?講簡單一點就是從你用瀏覽器打開網頁開始,到網頁內的元件一個一個生成,到整個完整的網頁建立的過程就叫生命週期,完整過程如下圖 是不是眼花撩亂啊?讓我簡化一下,其實主要順序就是如下圖 在加上 setup 語法糖的 script 標籤內做的事相當於在 be
Thumbnail
專案建好了,那先來講 Vue 的專案架構 詳細內容很多,所以我挑重點講 public index.html public/index.html 是 Vue 頁面的 entry point,進入一個 Vue 頁面會先進 public/index.html,再套用 App.vue,最後才是進入你寫的 .
Thumbnail
專案建好了,那先來講 Vue 的專案架構 詳細內容很多,所以我挑重點講 public index.html public/index.html 是 Vue 頁面的 entry point,進入一個 Vue 頁面會先進 public/index.html,再套用 App.vue,最後才是進入你寫的 .
Thumbnail
前言 有時候我很難從原文網站去理解、了解一件事情,因為他們廢話太多了 直接進入主題 觀念 Maven Lifecycle and phase and goal Clean     pre-clean  清理之前     clean  清理     post-clean 清理之後 Default
Thumbnail
前言 有時候我很難從原文網站去理解、了解一件事情,因為他們廢話太多了 直接進入主題 觀念 Maven Lifecycle and phase and goal Clean     pre-clean  清理之前     clean  清理     post-clean 清理之後 Default
Thumbnail
萬事起頭 這個簡單到不行的極度簡略步驟,卻是一切的基礎
Thumbnail
萬事起頭 這個簡單到不行的極度簡略步驟,卻是一切的基礎
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News