首頁>技術>

1 引入

在日常 Java 開發中,Maven 應該是必不可少的一個工具了,當然也有人使用 Gradle 的。那麼 Maven 究竟是個啥東西呢?不就是一個依賴引入工具嗎?我相信很多人和我是一樣的感覺。但是一般而言,感覺的東西往往是不可靠的。我在網上收集一些資料,翻翻官網,重新整理了一下 Maven 的資料。

2 Maven 簡介

維基百科上面說 Maven 是一個軟體專案管理和自動構建工具。單從字面意思來看,我是不知道這是想要表達什麼意思的。按照我的理解,Maven 其實就是一個開發工具,跟 IDEA 相輔相成。我們日常使用 IDEA 的編譯專案的時候,其實就是在使用 Maven,只不過這些操作都被強大的 IDEA 隱藏了,造成我們在使用 IDEA,和 Maven 沒有聯絡的錯覺。

3 Maven 的命令

說命令列之前,容我說手幾個專業的名詞。

名稱解釋groupId包名artifactId專案名稱

groupId 的 artifactId 被人們稱為座標,確實也是,一旦他們的值確定了,我們就可以根據他們的座標找到他們。

建立
mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app    -Dartifac t Id=my-app

這樣maven就自動建立了一個帶有 hello world 的 Maven 專案。包名是 com.mycompany.app; 專案名是 my-app。看到這裡,我們就知道為什麼 Maven 是專案構建工具了。我個人覺得 Maven 跟大前端的 npm 工具有相似的地方。

編譯mvncompile

該命令從字面意思流知道是編譯命令,他是不是編譯 test 資料夾裡面的原始碼的。執行該命令就會生成一個 target 檔案。資料夾裡面就是編譯後的內容。

清除mvnclean

該命令主要是清除編譯後產生的 target 資料夾。

打包mvnpackage

該命令會將專案預設打成 jar 包,當然我們就也可以打成 war 包。

安裝mvninstall

該命令可以把專案打成 jar,放到本地倉庫。

4 倉庫

要理解 Maven,倉庫概念是必不可少的。讓我(靈魂畫手)畫個圖。

專案需要的依賴都是從本地倉庫裡面拿到的,本地倉庫就是自己的電腦,我們引入的各種依賴都放在本地倉庫裡面,一般依賴有問題的話,就是本地倉庫的依賴沒有。我們可以先把本地的對應的依賴刪除,在試試,或許就可以了。 從中,我們可以看到自建倉庫,也就是我們說的私服,可以存放一些我們開發的基礎包,從自建倉庫引入依賴就比較快的,當然如果自建倉庫裡面沒有我們需要的依賴,自建倉庫就會發出請求,請求遠端的中央倉庫,中央倉庫沒有那就真的沒有了。

5 POM

現在是我們的重要任務出場了--POM. Maven 專案都會有一個 pom.xml 檔案。

這是一個最簡單的 pom 檔案。這個 pom 檔案應該我們很熟悉了,引入依賴就是從這裡引的。沒什麼好說的,所以說些其他的。

包型別
// war<packaging>jar</packaging>  

該標籤決定專案是 jar 包或者 war 包。一般來說,SpringBoot 專案會打成 war 包,然後放進 tomcat 執行。當然也可以 jar 包執行,畢竟 SpringBoot 內建了tomcat ,強的一批。

加進來
<build>    <resources>      <resource>        <directory>src/main/resources</directory>        <filtering>true</filtering>      </resource>    </resources></build>

如果我們把一下檔案,例如 xml 字尾的 mapper 檔案放在 resources 裡面,編譯的時候會發現他們沒有編譯進去,是因為 <filtering> 標籤預設是 false,我們需要 true。

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

在頂層 pom.xml 需要新增 <modules> 標籤,如下

<project xmlns="http://maven.apache.org/POM/4.0.0"  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">  <modelVersion>4.0.0</modelVersion>   <groupId>com.mycompany.app</groupId>  <artifactId>app</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>pom</packaging>   <modules>    <module>my-app</module>    <module>my-webapp</module>  </modules></project>

然後選一個做老大(webapp),在他的 pom 檔案里加入 my-app 的依賴

<dependencies>    <dependency>      <groupId>com.mycompany.app</groupId>      <artifactId>my-app</artifactId>      <version>1.0-SNAPSHOT</version>    </dependency>    ...</dependencies>

然後再這兩個專案(webapp、my-app)的 pom 檔案裡面加入頂層的 <parent> 標籤

<project xmlns="http://maven.apache.org/POM/4.0.0"  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">  <parent>    <groupId>com.mycompany.app</groupId>    <artifactId>app</artifactId>    <version>1.0-SNAPSHOT</version> </parent> ...

最後執行 mvn verify 命令,就會在老大專案(webapp)的 target 資料夾裡生成 war 包。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 免費開源軟體推薦之BT下載軟體qBittorrent