当前位置: 首页 > article >正文

maven 中<packaging>pom</packaging>配置使用

在 Maven 项目的 pom.xml 文件中, 元素用于指定项目的打包类型。默认情况下,如果 元素没有被显式定义,Maven 会假设其值为 jar。但是,当您设置 pom 时,这意味着该项目是一个 POM(Project Object Model)项目。

pom 的含义

1、POM 项目:

当一个项目的 设置为 pom 时,表示这是一个 POM 项目。这种类型的项目主要用于聚合其他模块或管理依赖关系。
POM 项目不会生成任何实际的输出文件(如 JAR、WAR 等),而是作为其他子模块的父 POM 或者用于集中管理依赖和插件配置。

2、多模块项目:

在多模块项目中,通常有一个父 POM 项目,它使用 pom 来声明自己是父项目。父 POM 项目可以包含多个子模块,并且可以集中管理这些子模块的共同配置,例如版本号、依赖项、插件等。
子模块可以在它们各自的 pom.xml 中继承父 POM 的配置,从而减少重复配置。

3、依赖管理:

POM 项目可以用来集中管理依赖版本和其他配置,这样所有的子模块都可以引用父 POM 中定义的依赖版本,而不需要在每个子模块中单独声明。

示例

父 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <modules>
        <module>child-module1</module>
        <module>child-module2</module>
    </modules>

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- 其他依赖项 -->
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
                <!-- 其他插件 -->
            </plugins>
        </pluginManagement>
    </build>
</project>

子模块

<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>child-module1</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <!-- 其他依赖项 -->
    </dependencies>
</project>

在这个例子中,parent-project 是一个 POM 项目,它定义了版本号、依赖管理和插件配置。child-module1 是一个子模块,它继承了父 POM 的配置,并且可以直接使用父 POM 中定义的依赖版本。

通过这种方式,您可以更好地组织和管理大型或多模块项目,减少重复配置,并保持项目的一致性。


http://www.kler.cn/a/411475.html

相关文章:

  • 红外小目标检测
  • Java【多线程】(1)进程与线程
  • react 前端最后阶段静态服务器启动命令
  • 101页PDF | 德勤_XX集团信息化顶层规划设计信息化总体解决方案(限免下载)
  • 网络原理(一):应用层自定义协议的信息组织格式 初始 HTTP
  • SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)
  • 活着就好20241127
  • AI智能体崛起:从“工具”到“助手”的进化之路
  • FreeRTOS——列表及列表项
  • 在 PyTorch 训练中使用 `tqdm` 显示进度条
  • PYNQ 框架 - 时钟系统 + pl_clk 时钟输出不准确问题
  • 将VSCode设置成中文语言环境
  • JAVA面试题、八股文学习之JVM篇
  • web day03 Maven基础 Junit
  • Postman设置接口关联,实现参数化
  • 【工作总结】2. 链路追踪与 APM 系统构建
  • HTTP中GET和POST的区别是什么?
  • 【排版教程】Word、WPS 分节符(奇数页等) 自动变成 分节符(下一页) 解决办法
  • 流媒体中ES流、PS流 、TS流怎么理解
  • Vscode终端出现在此系统上禁止运行脚本解决方法
  • 快速排序 归并排序
  • spring boot框架漏洞复现
  • 《白帽子讲Web安全》13-14章
  • 解决:Openstack创建实例进入控制台报错Something went wrong, connection is closed
  • 6.STM32之通信接口《精讲》之IIC通信---硬件IIC(STM32自带的硬件收发器)
  • Flink cdc同步增量数据timestamp字段相差八小时(分析|解决)不是粘贴复制的!