maven Pom.xml 笔记
Maven Pom.xml笔记
因为maven我不常使用,做一下简单的笔记以方便回顾
maven 目录结构
maven-project
├── pom.xml maven 配置文件
├── src 源代码目录
│ ├── main 主业务逻辑代码目录
│ │ ├── java Java 源文件目录
│ │ └── resources 资源文件目录
│ └── test 测试代码目录
│ ├── java 测试 Java 源文件目录
│ └── resources 测试资源文件目录
└── target 编译输出目录,包括打包输出,测试报告
后面的gradle项目目录结构也是一样的,估计已经是某种规范习惯了
pom.xml文件
pom.xml 文件是 maven 项目的核心配置文件,用于描述项目的基本信息,如项目坐标、依赖、构建、组织等。下面是一个简单的示例
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <!-- 指定 pom.xml 文件的版本 -->
<groupId>com.example</groupId> <!-- 指定项目所属的组织或公司的唯一标识符 -->
<artifactId>hello-maven</artifactId> <!-- 指定项目的唯一标识符,通常与项目名称相同 -->
<version>1.0-SNAPSHOT</version> <!-- 指定项目的版本号 -->
<packaging>jar</packaging> <!-- 指定项目的打包方式,如 jar, war, ear 等 -->
<name>Hello Maven</name> <!-- 指定项目的名称 -->
<description>A simple Maven project</description> <!-- 指定项目的描述 -->
<url>http://www.example.com</url> <!-- 指定项目的网址 -->
<dependencies> <!-- 指定项目所依赖的其他项目或库 -->
<dependency> <!-- 一个依赖元素,包含 groupId, artifactId, version 等信息 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope> <!-- 指定依赖的作用域,如 test, compile, runtime 等 -->
</dependency>
</dependencies>
<build> <!-- 指定项目的构建信息 -->
<finalName>${project.artifactId}</finalName> <!-- 指定最终生成的文件名 -->
<plugins> <!-- 指定构建过程中使用的插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source> <!-- 指定源代码的 Java 版本 -->
<target>1.8</target> <!-- 指定目标代码的 Java 版本 -->
</configuration>
</plugin>
</plugins>
</build>
</project>
多项目(子项目)配置
Maven项目中可以包含子项目,也称为多模块项目,这样可以将一个大的项目分解为多个小的模块,方便管理和维护。下面是简单的示例, 父项目可以充当版本仲裁的角色,也就是在父项目中规定了依赖的版本号,子项目中就可以不需要定义该版本号,所以我们`spring boot`只需要指定<parent>元素中springboot的版本号,引入springboot管理的依赖就不要自己写版本号,除非你希望自定义。
父项目pom文件
<!-- 父项目 pom.xml 文件 -->
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>multi-module-project</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Multi Module Project</name>
<description>A simple multi module project</description>
<modules>
<module>module-a</module>
<module>module-b</module>
<module>module-c</module>
</modules>
<dependencyManagement>
<dependencies>
<!-- 统一管理依赖版本 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 其他依赖 -->
</dependencies>
</dependencyManagement>
</project>
子项目pom文件
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<!-- 指定父项目信息 -->
<groupId>com.example</groupId>
<artifactId>multi-module-project</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>module-a</artifactId>
<packaging>jar</packaging>
<name>Module A</name>
<description>A simple module A</description>
<!-- 不需要指定版本号 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<!-- 可以指定作用域 -->
<scope>test</scope>
</dependency>
<!-- 依赖其他子模块 -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>module-b</artifactId>
<!-- 可以指定版本号 -->
<!--<version>${project.version}</version>-->
</dependency>
<!-- 其他依赖 -->
</dependencies>
<!-- 其他配置 -->
</project>
pom中的变量
pom的变量有两种,内置变量和自定义的变量。在<properties>元素中定义变量。
另外,子项目可以使用父项目中定义的变量,只要在子项目的pom.xml中指定父项目的groupId、artifactId和version,就可以继承父项目的pom配置,包括变量。如果子项目中有同名的变量,那么子项目的变量会覆盖父项目的变量
评论