<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          重量級 | 重量級!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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产扒开腿精品无码高潮视频 | 能看的操逼视频 | 色鬼综合网 | 九一成人电影。 | 在线播放一区 |