IT评测·应用市场-qidao123.com技术社区

标题: Maven:Java项目构建与依赖管理工具 [打印本页]

作者: 铁佛    时间: 2025-3-31 20:10
标题: Maven:Java项目构建与依赖管理工具
Maven 是什么

        Maven 将项目开发过程和管理过程抽象成一个项目对象模型(POM),本质上是一个项目管理工具。Maven 重要用于Java项目标依赖管理、编译、测试、打包和部署等操作。
        Maven的核心计划围绕标准化和主动化,通过一系列约定和抽象简化项目构建与管理。

Maven 的核心概念

POM

        POM(Project Object Model 项目对象模型)是Maven项目标核心设置文件,以XML格式形貌项目标元数据、依赖、插件、构建规则等信息。
POM文件的构成

1、基础结构

        pom文件以<project>作为开头,用于界说pom文件结构和版本束缚。
        xmlns和xmlns:xsi用于标识命名空间;xsi:schemaLocation用于指定XML模式文件的位置,用于验证POM文件正当性。
        <modelVersion>用于标识POM模型版本。
        (注:Maven2.x和3.x均使用的POM模型4.0.0版本,所以非特别情况,版本必须设置为4.0.0)
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2.          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4.                              http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.   <modelVersion>4.0.0</modelVersion>
  6.   <name>My Project</name>
  7.   <description>A demo project for Maven</description>
  8.   <url>http://example.com</url>
  9. </project>
复制代码
2、项目坐标

        作为唯一标识项目标三元组。
  1. <groupId>com.example</groupId>
  2. <artifactId>my-project</artifactId>
  3. <version>1.0.0</version>
复制代码
3、依赖管理

        界说项目标第三方依赖库。
  1. <dependencies>
  2.     <dependency>
  3.         <groupId>io.jsonwebtoken</groupId>
  4.         <artifactId>jjwt-api</artifactId>
  5.         <version>0.11.5</version>
  6.     </dependency>
  7.     <!-- ... -->
  8. </dependencies>
复制代码
        常用元素:

4、构建设置

        界说编译、打包、插件等举动。
  1. <build>
  2.   <sourceDirectory>src/main/java</sourceDirectory>
  3.   <plugins>
  4.     <plugin>
  5.       <groupId>org.apache.maven.plugins</groupId>
  6.       <artifactId>maven-compiler-plugin</artifactId>
  7.       <version>3.8.1</version>
  8.       <configuration>
  9.         <source>11</source>
  10.         <target>11</target>
  11.         <encoding>UTF-8</encoding>
  12.       </configuration>
  13.     </plugin>
  14.   </plugins>
  15.   <resources>
  16.     <resource>
  17.       <directory>src/main/resources</directory>
  18.       <filtering>true</filtering>
  19.     </resource>
  20.   </resources>
  21. </build>
复制代码
5、父模块与子模块

        多模块设置,父模块聚合多个子模块。
  1. <!-- 父模块 -->
  2. <groupId>com.example</groupId>
  3. <artifactId>parent-project</artifactId>
  4. <version>1.0.0</version>
  5. <packaging>pom</packaging>
  6. <modules>
  7.   <module>module-a</module>
  8.   <module>module-b</module>
  9. </modules>
  10. <!-- 子模块 -->
  11. <parent>
  12.   <groupId>com.example</groupId>
  13.   <artifactId>parent-project</artifactId>
  14.   <version>1.0.0</version>
  15. </parent>
  16. <artifactId>module-a</artifactId>
复制代码
6、依赖管理统一设置

        父模块POM文件统一管理依赖版本,子模块引用时无需指定版本。
  1. <!-- 父模块 -->
  2. <dependencyManagement>
  3.   <dependencies>
  4.     <dependency>
  5.       <groupId>org.springframework</groupId>
  6.       <artifactId>spring-core</artifactId>
  7.       <version>5.3.18</version>
  8.     </dependency>
  9.   </dependencies>
  10. </dependencyManagement>
  11. <!-- 子模块 -->
  12. <dependencies>
  13.   <dependency>
  14.     <groupId>org.springframework</groupId>
  15.     <artifactId>spring-core</artifactId> <!-- 无需写version -->
  16.   </dependency>
  17. </dependencies>
复制代码
7、属性界说

        通过属性界说的方式,集中管理版本变量。
  1. <!-- 定义变量 -->
  2. <properties>
  3.   <java.version>11</java.version>
  4.   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  5.   <spring.version>5.3.18</spring.version>
  6. </properties>
  7. <!-- 引用属性 -->
  8. <version>${spring.version}</version>
复制代码
生命周期

1、clean生命周期

        清理构建产物,核心阶段如下:

2、default生命周期

        编译、测试、打包、部署,核心阶段如下:

3、site生命周期

        生成项目文档和报告。


总结

        Maven 凭借其 标准化、依赖管理和主动化构建 能力,成为 Java 生态体系中的基石工具。无论是新项目选型还是旧项目维护,合理运用 Maven 的约定与扩展能力,将显著提拔开发服从与项目可维护性。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4