maven的三种工程 pom工程、jar工程、war工程的区别和使用

一:pom工程:作用1、管理版本;2、聚合工程

1、版本管理。首先创建pom工程:new-->maven project-->勾上create a simple project。到第三幅图,这里才显示maven工程的不同所在,他有一个parent project,也即是父工程,也就是工程继承,理解工程继承也就理解了maven。maven的作用是:

  1. 依赖管理、jar包、工程之间的依赖。
  2. 项目构建。实现项目的一步构建。
  3. 工程聚合、继承、依赖。

 

 

最后创建出来的就是这么一个项目。结构非常简单

重点就在于这个pom文件,dependency标签,这是maven的标签。

这个pom工程是个父工程。是用来让别的工程来继承的。里面没有什么代码,只是pom文件里面定义了依赖的坐标和版本号。继承他的子工程都自动的使用同样的版本和依赖工具。这既是maven的好处。

2、聚合工程

聚合工程跟上面的一样,只是pom文件里面会有以来的独立的包。看截图,右图是聚合工程的工程结构,红框里面都是新建的四个独立的工程,在manager上右键new--》maven module,前三个是jar工程,第四个是war工程。maven的这四类工程都是相辅相成的,互相配合使用,他们都是用manager这个父工程,而manager有继承parent这个夫工程,这两个父工程都是pom工程。

意义:这其中的意义就在与父工程能集体控制版本。

二:jar工程

1、new--》maven project(module也是工程) --》 填选择jar --》 写继承工程。看下图,工程结构就是这样子。

意义:jar工程可以打包,有自己的坐标,跟依赖工具一样的使用。可以缩减依赖。即把多个工程都依赖的包打包成一个jar工程,这些工程依赖这个工程就可以了。

三:war工程

1、new --》maven project --》 选择war --》 填写父工程。结构如下图

意义:和jar工程非常像,只是它是一个web工程,能对外提供服务http接口。

<think>好的,用户的问题是关于如何在Maven中打包父工程工程POM文件。我需要先回忆一下Maven的多模块项目结构,父工程通常作为聚合模块,子模块继承父POM的配置。 首先,用户可能想知道如何正确配置父POMPOM,以确保打包时各模块能正确识别依赖插件。根据引用[1],Maven的父POM中可以定义共享的依赖插件配置,子模块通过继承来使用这些配置。需要提到的是,父POM的packaging类型应为pom,而子模块通常是jarwar。 接下来,用户可能关心如何执行打包命令。在父工程目录下运行mvn package会触发所有子模块的打包,但需要确认子模块是否正确声明了父POM。引用[2]提到依赖管理使用Maven坐标,所以子模块的依赖版本可以从父POM继承,避免重复定义。 另外,用户可能遇到打包时父POM未被正确识别的问题,这可能是因为relativePath设置不正确。根据引用[3],Maven默认会在上级目录查找父POM,如果结构不符合,需要显式指定路径。需要提醒用户检查子模块中parent元素的relativePath是否正确指向父POM的位置。 最后,用户可能需要了解如何发布父POM到仓库,以便其他项目可以引用。这涉及到使用mvn deploy命令,并确保distributionManagement配置正确。同时,子模块在打包时会生成各自的构件,父POM作为独立构件也需要正确部署。 总结步骤:配置父POM的packaging为pom,子模块声明父POM使用mvn package命令打包,处理可能的路径问题,最后部署到仓库。需要确保引用相关的知识点,并生成相关问题帮助用户深入理解。</think>在Maven中打包父工程工程POM文件需要理解多模块项目的结构依赖管理机制。以下是具体步骤原理: ### 一、父工程配置 1. 父POM的`packaging`必须设置为`pom` ```xml <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <!-- 关键配置 --> ``` 2. 声明子模块列表: ```xml <modules> <module>child-module1</module> <module>child-module2</module> </modules> ``` ### 二、子工程配置 每个子模块需要继承父POM: ```xml <parent> <groupId>com.example</groupId> <artifactId>parent-project</artifactId> <version>1.0.0</version> <!-- 如果子模块不在父目录下,需指定relativePath --> </parent> ``` ### 三、打包执行 1. **聚合打包**:在父工程目录执行`mvn package`时,Maven会按照拓扑顺序依次构建所有子模块[^1] 2. **独立打包**:在子模块目录单独执行`mvn package`会继承父POM的配置 ### 四、依赖管理 父工程可通过`dependencyManagement`统一管理依赖版本: ```xml <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement> ``` ### 五、注意事项 1. 确保父工程已安装到本地仓库(`mvn install`)或在子模块中正确配置`relativePath` 2. 使用Maven 3.x版本(引用[1]指出最低要求Maven 2.0,但建议使用新版) 3. 通过`mvn dependency:tree`验证依赖继承关系[^2] $$ \text{构建顺序} = \text{拓扑排序}(\text{模块依赖图}) $$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值