# maven-package-demo **Repository Path**: luoex/maven-package-demo ## Basic Information - **Project Name**: maven-package-demo - **Description**: maven多模块打包示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 1 - **Created**: 2022-02-11 - **Last Updated**: 2023-09-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 在maven多模块项目中,可配合插件flatten-maven-plugin及${revision}变量进行全局版本号管理。 **flatten-maven-plugin插件示例:** ```xml org.codehaus.mojo flatten-maven-plugin 1.2.1 pom-xml-flattened true resolveCiFriendliesOnly flatten process-resources flatten flatten.clean clean clean ``` **父pom示例:** ```xml 4.0.0 com.luo.demo maven-package-demo pom ${revision} module-1 module-2 maven-package-demo 1.0.0-SNAPSHOT com.luo.demo module-1-1 ${project.version} com.luo.demo module-1-2 ${project.version} org.codehaus.mojo flatten-maven-plugin ... ``` **子模块pom示例;** ```xml maven-package-demo com.luo.demo ${revision} 4.0.0 module-1 ``` >注: >父子模块需遵循父子目录层次, **关于子模块中parent.relativePath使用:** - 默认值,不设置relativePath即为默认值,等价于`../pom.xml`,即遵循父子目录层次 - 即优先查找上层目录`../pom.xml` - 然后查找本地仓库 - 最后查找远程仓库 - 推荐自定义的开发项目遵循此种方式(即父子模块需遵循父子目录层次,且保持parent.relativePath的默认值) - 空值``,即跳过本地文件目录查找 - 直接查找本地仓库 - 最后查找远程仓库 - 适用于父依赖为第三方公有仓库中的依赖,如spring-boot-starter-parent - 其他值,可根据目录层次自行定义(推荐使用相对目录层次),如`../module-1/pom.xml` **不可混合使用\\${revision}和明确字符串版本号** 若出现父子模块版本号混合使用${revision}和明确字符串形式如1.0.0.-SNAPSHOT,在mvn package会出现类似如下错误: >[FATAL] Non-resolvable parent POM for com.luo.demo:module-1:[unknown-version]: >Could not find artifact com.luo.demo:maven-package-demo:pom:1.0.0-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 13 若使用插件flatten-maven-plugin及\\${revision},切记要全局(父pom及所有子pom)都使用\\${revision}来管理版本号(即`${revision}`)