1. 重量級 | 重量級!Maven史上最全教程,看了必懂

        共 3799字,需瀏覽 8分鐘

         ·

        2020-11-01 05:35


        Hi! 我是小小,今天是本周的第一篇,本周第一篇主要內(nèi)容是maven項目的創(chuàng)建和使用。

        前言

        為了持續(xù)集成和持續(xù)部署,需要把項目改造為,或者使用maven創(chuàng)建項目,下面介紹maven

        為什么要使用maven

        在開發(fā)中經(jīng)常需要依賴第三方包,包與包之間存在依賴關(guān)系,版本之間存在兼容問題,還有需要把包進行升級和降級,當(dāng)項目復(fù)雜到了一定程度的時候,需要對包進行管理。maven是當(dāng)前最受歡迎的自動化綜合工具,類似的還有ant,npm,nuget,composer。maven提供了開發(fā)人員構(gòu)建一個完整生命周期的框架,開發(fā)團隊可以自動化的完成項目的基礎(chǔ)工具建設(shè),maven使用標(biāo)準(zhǔn)目錄結(jié)構(gòu)和默認構(gòu)建生命周期, 因此maven是一個項目管理工具。主要做了以下幾件事情

        1. 統(tǒng)一開發(fā)規(guī)范與工具。
        2. 統(tǒng)一管理jar包

        maven生命周期

        maven把項目構(gòu)建劃分為不同的生命周期,它這個過程包括編譯,測試,打包,集成測試,驗證,部署,maven的所有執(zhí)行動作都需要指明自己在這個過程的執(zhí)行位置,然后在maven執(zhí)行的時候,依照過程的發(fā)展依次調(diào)用包進行處理。這個是maven的一個基本的調(diào)度機制,

        maven的標(biāo)準(zhǔn)工程結(jié)構(gòu)

        |-- pom.xml(maven的核心配置文件)
        |-- src
        |-- main
        |-- java(java源代碼目錄)
        |-- resources(資源文件目錄)
        |-- test
        |-- java(單元測試代碼目錄)
        |-- target(輸出目錄,所有的輸出物都存放在這個目錄下)
        |-- classes(編譯后的class文件存放處)

        Maven的約定優(yōu)于配置

        所謂的約定優(yōu)于配置,在maven中,并不是完全不可以修改,他們只是一些配置的默認值。每一個階段的任務(wù)都知道自己要這么正確的完成自己的工作,比如compile任務(wù)就知道從src/main/java下編譯所有的java文件,并把它的輸出的class文件存放到target/classes文件中。對于maven來說,采用約定優(yōu)于配置,可以減少工作量,降低學(xué)習(xí)成本。

        Maven版本規(guī)范

        groupId - 團體、組織的標(biāo)識符。團體標(biāo)識的約定是,它以創(chuàng)建這個項目的組織名稱的逆向域名(reverse domain name)開頭。一般對應(yīng)著 JAVA 的包的結(jié)構(gòu)。例如 org.apache artifactId - 單獨項目的唯一標(biāo)識符。比如我們的 tomcat, commons 等。不要在 artifactId 中包含點號(.)。version - 一個項目的特定版本。packaging - 項目的類型,默認是 jar,描述了項目打包后的輸出。類型為 jar 的項目產(chǎn)生一個 JAR 文件,類型為 war 的項目產(chǎn)生一個 web 應(yīng)用。

        maven版本規(guī)范一般定義為

        、、-

        處理邏輯的版本號為

        SNAPSHOT - 這個版本一般用于開發(fā)過程中,表示不穩(wěn)定的版本。
        LATEST - 指某個特定構(gòu)件的最新發(fā)布,這個發(fā)布可能是一個發(fā)布版,也可能是一個 snapshot 版,具體看哪個時間最后。
        RELEASE - 指最后一個發(fā)布版。

        安裝

        配置環(huán)境變量

        (1)解壓壓縮包(以 apache-maven-3.3.9-bin.zip 為例)

        (2)添加環(huán)境變量 MAVEN_HOME,值為 apache-maven-3.3.9 的安裝路徑(3)在 Path 環(huán)境變量的變量值末尾添加%MAVEN_HOME%bin

        (4)在 cmd 輸入 mvn –version,如果出現(xiàn) maven 的版本信息,說明配置成功。

        本地倉儲配置

        從中央倉庫下載的jar包都會統(tǒng)一的保存在本地倉庫中,我們需要配置本地倉庫的位置。在conf目錄下的setting.xml文件。

        第一個maven工程

        在 Intellij 中創(chuàng)建 Maven 工程

        (1)創(chuàng)建 Maven 工程

        依次點擊 File -> New -> Project 打開創(chuàng)建工程對話框,選擇 Maven 工程。(2)輸入項目信息(3)點擊 Intellij 側(cè)邊欄中的 Maven 工具界面,有幾個可以直接使用的 maven 命令,可以幫助你進行構(gòu)建。

        Maven 命令構(gòu)建方式

        進入工程目錄,輸入maven命令

        使用指導(dǎo)

        添加外部依賴 jar 包

        在maven工程中添加 jar 包,只需要在 pom 文件中引入對應(yīng)的標(biāo)簽即可。

          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        4.0.0
        com.zp.maven
        MavenDemo
        0.0.1-SNAPSHOT
        jar
        MavenDemo
        http://maven.apache.org


        UTF-8
        3.8.1




        junit
        junit
        ${junit.version}
        test



        log4j
        log4j
        1.2.12
        compile




        標(biāo)簽具有四個屬性。

         - 項目組織唯一的標(biāo)識符,實際對應(yīng) JAVA 的包的結(jié)構(gòu)。
        - 項目唯一的標(biāo)識符,實際對應(yīng)項目的名稱,就是項目根目錄的名稱。
        - jar 包的版本號??梢灾苯犹畎姹緮?shù)字,也可以在 properties 標(biāo)簽中設(shè)置屬性值。
        - jar 包的作用范圍??梢蕴顚?compile、runtime、test、system 和 provided。用來在編譯、測試等場景下選擇對應(yīng)的 classpath。

        如何尋找 jar 包

        在 ?mvnrepository.com 站點搜尋你想要的 jar 包版本

        使用 maven 插件

        要添加 Maven 插件,可以在 pom.xml 文件中添加標(biāo)簽。




        org.apache.maven.plugins
        maven-compiler-plugin
        3.3

        1.7
        1.7





        一次編譯多個工程

        需要創(chuàng)建一個父 maven 工程,它有兩個字工程,my-app,my-webapp

        +- pom.xml
        +- my-app
        | +- pom.xml
        | +- src
        | +- main
        | +- java
        +- my-webapp
        | +- pom.xml
        | +- src
        | +- main
        | +- webapp

        app 工程的pom.xml 如下,重點在于 modules 中引入了兩個子 module

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/xsd/maven-4.0.0.xsd">
        4.0.0

        com.mycompany.app
        app
        1.0-SNAPSHOT
        pom


        my-app
        my-webapp



        選擇編譯 某某 時,會依次對它所有的 module 執(zhí)行相同的操作。

        如何打包一個可以直接運行的Spring Boot jar 包

        可以使用 Spring-boot-maven-plugin 插件




        org.springframework.boot
        spring-boot-maven-plugin



        repackage







        如果引入了第三方j(luò)ar包,如何打包 首先,添加依賴


        io.github.dunwu
        dunwu-common
        1.0.0
        system
        ${project.basedir}/src/main/resources/lib/dunwu-common-1.0.0.jar


        然后配置插件




        org.springframework.boot
        spring-boot-maven-plugin



        repackage




        true





        最佳實踐

        通過 bom 統(tǒng)一管理版本 使用類似 spring-boot-dependencies的方式統(tǒng)一管理依賴版本 spring-boot-dependencies的pom.xml的形式



        4.0.0
        org.springframework.boot
        spring-boot-dependencies
        2.1.4.RELEASE
        pom




















        其他項目中,通過引入來管理依賴

         


        org.springframework.boot
        spring-boot-dependencies
        ${spring-boot.version}
        pom
        import




        關(guān)于作者

        我是小小,一個生于二線,活在一線城市的程序猿,我是小小,我們下期再見。


        瀏覽 72
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
          
          

            1. 色戒免费观看完整版高清在线观看中文 | 男男gay互吃鳮吧吞精小说 | 天堂在线观看视频 | 高清AV无码 | 黄色片亚洲 |