項目描述對像模型

Maven 首先標準化的內容之一是項目描述。在 Maven 之前,每個 IDE 都有自己的項目文件,其中存儲了有關項目及其程序集的信息(通常以二進制形式)。

Maven 提出了一個基於 XML 的、通用的、開放的標準,該標準描述了項目是什麼、應該如何構建以及它使用各種標籤具有哪些依賴項。項目描述包含在一個文件中,通常名為pom.xml

示例pom.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<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>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <version>2.6</version>
        </dependency>
   </dependencies>


</project>

這個例子寫了三件事:

  • 有關maven 項目標準版本的信息是藍色的。
  • 有關項目本身的信息以紅色顯示。
  • 有關已用庫的信息是綠色的。

讓我們仔細看看pom文件設備。

Maven項目結構

緊接著的問題是:你注意到最後一個例子中的奇怪之處了嗎?它不包含有關項目代碼本身的信息!沒有關於 java 文件、資源、屬性文件、html、構建腳本等存儲位置的消息。

答案很簡單——Maven 標準化了項目的設計。在項目中組織代碼有多種選擇,最常見的是:

在標準 IDEA 項目之後,該結構有點不尋常,但它是通用的。生活中你會遇到的項目90%都會有這種文件夾結構

如果您創建一個 Maven 項目(使用 IDEA 或使用控制台),那麼它將採用指定的形式。讓我們看看它是如何在這里工作的。

您猜對了, src文件夾包含項目的源代碼。它有兩個子文件夾:maintest

/src/main/java文件夾是項目中所有 Java 類的根目錄。如果您有 com.codegym.Cat 類,那麼它將位於/src/main/java /com/codegym /Cat.java文件夾中。如果有文本或二進制資源,它們應該存儲在/src/main/resources文件夾中。

/src/test文件夾的結構類似於/src/main文件夾的結構,但它包含測試及其資源。Maven 本身知道如何在構建項目時運行必要的測試,但我們將在單獨的講座中討論這一點。

項目中還有一個/target文件夾,Maven 會在項目構建完成後將其保存在該文件夾中。由於大型項目通常具有重要的構建腳本,因此此文件夾中不存儲任何內容。

/target文件夾的第二個用途是緩存中間構建結果。在構建大型項目時,Maven 只能重建其中發生變化的部分,從而將構建時間加快數倍。

好吧,作為蛋糕上的櫻桃 - 項目的最根是 pom.xml 文件。它包含有關該項目的所有必要信息,我們將在下面討論。

設備 pom.xml

首先,pom 文件是 xml,因此它包含標準標頭和命名空間信息。這都是關於純 XML 標準的,所以我們不會詳細討論它。這意味著:

<?xml version="1.0" encoding="UTF-8"?>
<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">

        ...

</項目>

此外,<project> 標籤內的第一行通常是對 pom 文件標準版本的描述。幾乎總是 4.0。這也是我們不感興趣的。

我們感興趣的第一行看起來像這樣:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

為了不再次理解我們在Maven標準中所描述的(程序、項目、模塊、庫等),這裡統稱為工件這個詞。你無法拒絕 Maven 的創造者的是對標準化的熱愛。

您看到的三個標籤的意思是:

  • groupId - 應用所屬的包,加上域名;
  • artifactId – 唯一的字符串鍵(項目 ID);
  • version - 項目的版本。

這三個參數足以毫不含糊地描述任何一件神器

此外,在項目描述之後,通常會有項目使用的工件(庫)列表。它看起來像這樣:

   <dependencies>

       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <版本>2.6</version>
       </dependency>

   </dependencies>

在此示例中,我們將 commons-io 包 2.6 版中的 commons-io 庫添加到我們的項目中。

在構建時,Maven 將在其全局存儲庫中找到這樣一個庫並將其添加到您的項目中。順便說一句,不僅 Maven 可以做到這一點。

IDEA 如何與 Maven 一起工作

Intellij IDEA 非常擅長與 Maven 合作。她知道如何打開這樣的項目,自己創建它們,運行各種構建腳本,並且完全理解其中包含的庫。

它甚至有一段時間有自己內置的 Maven,但你仍然需要能夠自己安裝和配置它,所以 IDEA 的這個特性前面沒有提到。從理論上講,IDEA 可以在兩個 Maven 之間產生衝突,所以知道有兩個對您有好處。

如何在IDEA中新建一個Maven項目:

單擊菜單文件 > 新建項目。選擇左側的菜單項New Project

maven項目

讓我們澄清一些要點:

  1. 項目名;
  2. 項目文件夾;
  3. 項目語言為Java;
  4. 項目類型是 Maven。

在底部的Advanced Settings部分,IDEA會提示你指定我們新項目的goupID、artifactID和version。以後可以隨時輕鬆更改此數據。從建議的選項中選擇或輸入您自己的選項:

Maven 項目 2

接下來,在需要的位置規範地創建一個項目。結果,我們看到了結構:

Maven 項目 3

必須在 java 文件夾中創建類和包,我們已經談到了這一點。而且我認為您可以輕鬆應對。我們已準備好繼續前進,但讓我們稍微回顧一下我們“略過”的一個重要問題。