Maven 通過坐標唯一標識每個構件,實現依賴自動化解析與下載。坐標是 Maven 世界的「身份證」,理解它是掌握依賴管理的前提。
<groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <packaging>jar</packaging> <!-- classifier 不直接在 POM 定義,由插件生成附屬構件時指定 -->
| 元素 | 是否必填 | 含義與約定 |
|---|---|---|
| groupId | 是 | 項目隸屬的實際項目/組織標識。 • 通常與域名反向對應(如 com.company.project)。• 一個實際項目可拆分多個 Maven 模塊,共享 groupId。 • 不應僅定義到公司級別,需體現具體項目。 |
| artifactId | 是 | 當前模塊在實際項目中的唯一標識。 • 推薦用實際項目名作為前綴(如 spring-core、spring-context)。• 默認構件文件名: ${artifactId}-${version}.${packaging}。 |
| version | 是 | 構件版本號。 • 遵循語義化版本: 主版本.次版本.修訂版本[-SNAPSHOT]。• SNAPSHOT 表示開發中快照版,發布版去掉 SNAPSHOT。 |
| packaging | 否(默認 jar) | 打包方式,決定輸出文件副檔名。 • 常見: jar、war、pom(父項目/聚合項目)、ear、maven-plugin。• 自定義打包需配置對應插件。 |
| classifier | 否(不可直接定義) | 區分主構件的附屬構件。 • 由插件生成時指定: javadoc、sources、tests、shaded 等。• 附屬構件坐標: groupId:artifactId:version:classifier:packaging。• 例: junit-3.8.1-javadoc.jar、junit-3.8.1-sources.jar。 |
本地/遠程倉庫目錄結構完全按坐標組織:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.21</version> </dependency> <!-- 附屬構件引用 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <classifier>sources</classifier> </dependency>