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>
<properties> <java.version>1.8</java.version> </properties> -
<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 遵循由幾個階段組成的特定建置生命週期:
驗證:
驗證項目結構。
編譯:
將 Java 程式碼轉換為字節碼(.class 檔案)並將其放置在 target/ 資料夾中。
檢定:
執行位於 test/ 目錄中的測試案例。
套餐:
從編譯的字節碼產生 JAR/WAR 檔案並將它們儲存在 target/ 資料夾中。
驗證:
檢查包裹的完整性。
安裝:
在本機儲存庫中安裝軟體套件。
部署:
將套件上傳到遠端儲存庫。
自訂建置流程:
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 資料夾,其中保存了所有依賴項。我們可以從
使用 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中文網其他相關文章!