# 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}`)