首頁 > Java > java教程 > 掌握 Maven:超越建置管理

掌握 Maven:超越建置管理

王林
發布: 2024-07-17 04:44:19
原創
378 人瀏覽過

Mastering Maven: Beyond Build Management

Maven 被廣泛認為是一個強大的建置自動化工具,但它的作用遠不止於此。它是一個全面的專案管理工具,可以簡化整個建置流程、依賴關係管理和文件產生。在這篇文章中,我們將探索 Maven 的各個方面並詳細了解其功能。

Maven 的主要特性
1.建構一代
2.依賴管理
3.文檔

當您執行 mvn build 或 mvn deploy 等指令時,Maven 會尋找包含所有設定的 pom.xml 文件,並採取對應的動作。讓我們更深入地了解 pom.xml 結構及其意義。

POM 檔案

``` 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

<!-- Basic project information -->
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>

<!-- Properties -->
<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <spring.version>5.2.8.RELEASE</spring.version>
</properties>

<!-- Dependencies -->
<dependencies>
    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- Spring Context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- JUnit for testing -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
</dependencies>

<!-- Build configuration -->
<build>
    <plugins>
        <!-- Compiler plugin -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
            </configuration>
        </plugin>
        <!-- Surefire plugin for running tests -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
        </plugin>
    </plugins>
</build>

<!-- Repositories -->
<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
</repositories>

<!-- Distribution management for deployment -->
<distributionManagement>
    <repository>
        <id>releases</id>
        <url>http://repo.mycompany.com/releases</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <url>http://repo.mycompany.com/snapshots</url>
    </snapshotRepository>
</distributionManagement>
登入後複製

讓我們解碼 POM 檔案:

**pom.xml 的檔案遵循特定的 XML 模式(在 xsi:schemaLocation: 中定義),確保它遵循 Maven 驗證的正確結構。這是一個例子:


<project 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">



登入後複製

關鍵要素:

  • 父 POM:
    Spring Boot 中的每個 POM 檔案都有一個父 POM。如果未定義父級,則超級 POM 將成為父級。

  • GroupId、ArtifactId 和版本:
    這些元素唯一標識 Maven Central 中的項目。


<groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>


登入後複製
  • 屬性: 定義可在整個 pom.xml 中引用的鍵值對。

<properties>
    <java.version>1.8</java.version>
</properties>

-

登入後複製
  • 儲存庫: 指定下載依賴項的位置,通常是從 Maven Central。

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
</repositories>


登入後複製

依賴項:列出項目的依賴項。


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.3.4.RELEASE</version>
    </dependency>
</dependencies>


登入後複製
  • 建置配置: 定義建置過程和階段。 為此,我們需要了解 maven 的建置生命週期。

Maven 建置生命週期

Maven 遵循由幾個階段組成的特定建置生命週期:

  1. 驗證:
    驗證項目結構。

  2. 編譯:
    將 Java 程式碼轉換為字節碼(.class 檔案)並將其放置在 target/ 資料夾中。

  3. 檢定:
    執行位於 test/ 目錄中的測試案例。

  4. 套餐:
    從編譯的字節碼產生 JAR/WAR 檔案並將它們儲存在 target/ 資料夾中。

  5. 驗證:
    檢查包裹的完整性。

  6. 安裝:
    在本機儲存庫中安裝軟體套件。

  7. 部署:

    將套件上傳到遠端儲存庫。

自訂建置流程:
Maven 提供了透過元素在每個階段添加特定目標的靈活性。您也可以建立和使用外掛程式來擴充 Maven 的功能。


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>



登入後複製

*使用 maven 安裝:*
完成測試、打包和驗證後,它會安裝我們在編譯階段創建的 jar 檔案。
這裡它創建了一個 m2 資料夾,其中保存了所有依賴項。我們可以從

下的 settings.xml 來變更此資料夾位置

使用 Maven 部署
部署配置在元素內部指定。


<distributionManagement>
    <repository>
        <id>internal.repo</id>
        <url>http://repo.mycompany.com/maven2</url>
    </repository>
</distributionManagement>



登入後複製

提示:我們可以在 .m2/repository 資料夾內的 settings.xml 中提供憑證。

隨時了解 Maven 並掌握其細微差別可以顯著增強專案管理和建置自動化技能。請記住,Maven 不僅僅是一個建置工具,它也是專案的指揮中心。深入研究、探索新插件並不斷嘗試。我們與 Maven 的接觸越多,我們的開發流程就會變得越強大。不斷突破界限,讓 Maven 處理剩下的事情 — 畢竟,這就像擁有一把瑞士軍刀來滿足您的專案管理需求!

非常感謝您的閱讀,非常感謝您的寶貴回饋。
如果您遇到任何很酷的插件,也請在評論中告訴我。
別忘了按讚、分享和訂閱。

以上是掌握 Maven:超越建置管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板