一个大的项目,随着功能的日趋增多,会逐渐的将部分功能剥离出来,变成一个较为独立的模块,或者是将某些公共的代码变成基础库。parent与module就是用来解决这样的问题的(parent与module不需要配对使用)。比如下面的工程结构:
─parent
├─child1 ├─child2 ├─share1 ├─share2 ├─pom.xmlparent是根目录, 它包含4个模块, child1生成可执行jar, child2生成一个war包, share1生成jar库, share2是依赖于share1的jar库. 它们的依赖关系如下
child1 (jar) child2 (war) | / | share2(jar) | / share1(jar)
parent/pom.xml基本格式
4.0.0 test parent 1.0.0 parent pom child1 child2 share1 share2
parent/share1/pom.xm格式
test parent 1.0.0 ../pom.xml 4.0.0 share1 1.0.0 share1 jar
parent/child1/pom.xml格式
test parent 1.0.0 4.0.0 my-child1 1.0.0 child1 test share1 1.0.0
share2, child2的格式也是类似的 本例中,模块之间也产生了依赖关系,需要被依赖的module和parent/pom.xml安装到本地仓库中, 否则编译child1时,会找不到shar1,或是找不到parent 安装parent/pom.xml过程如下
cd parentmvn install -N
-N是指不递归操作,否则会把所有的child都安装一遍,如果你不介意,也无所谓,但是会多花时间,尤其是很大的工程。 安装share1过程如下
cd parent/share1mvn install
上面两步都执行成功之后, child1才能编译通过