创建父工程
maven多模块项目需要一个父工程来聚合各个子模块,不过其实就是需要一个父pomxml,
主要作用是声明子模块,代码如下:
1 | <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"> |
创建子模块工程
目录结构1
2
3
4
5
6
7
8.
|-- my-module1
| `-- pom.xml 第一个web项目子模块
|-- my-module2
| `-- pom.xml 第二个web项目子模块
|-- my-module3
| `-- pom.xml 第一个java项目子模块
`-- pom.xml 父模块
如果使用的是eclipse的话直接在父工程项目->右键->Maven->Add New Maven Module Project,剩下的和创建普通maven项目流程相同。
第一个web子模块(web项目主模块其他web项目会打包到该模块)pom.xml代码
1 | <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"> |
第二个web子模块(该模块会打包到web主模块中)pom.xml代码
1 | <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"> |
第一个java子模块pom.xml代码
1 | <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"> |
web项目合并当着需要注意一下记得
- 被合并的子web项目packaging属性必须是war
- 被合并的子web项目,必须在主项目中添加依赖关系。
- 被合并的子web项目中,如果没有web.xml,则需要在pom.xml中声明
- 在web项目主模块中的java build path 中添加子web项目的依赖,就可以直接调用子项目的方法咯(记得避免循环依赖哦)
- 被合并的子web项目中的web.xml你可以选择性的放入合并内容当中(可以看情况需要进行合并)
- 配置文件继承相同的继承策略用于为 POM 本身。
只要配置好以上内容,该多个模块的maven项目的主web模块就可以放到tomcat中运行起来啦。
添加以前的项目作为子模块到新的项目当中
其实只需要修改一下父工程pom.xml引用子模块的pom.xml文件的路径
和子模块引用pom.xml引用父工程的pom.xml的路径就可以啦
父工程与子模块平级的情况
目录结构1
2
3
4
5
6
7
8
9.
|-- my-module1
| `-- pom.xml
|-- my-module2
| `-- pom.xml
|-- my-module3
| `-- pom.xml
`-- parent
`-- pom.xml
父工程pom.xml修改如下内容:
修改前:1
2
3
4
5<modules>
<module>mavenweb</module> <!-- 第一个web项目子模块-->
<module>mavenadmin</module> <!-- 第二个web项目子模块-->
<module>mavenjava</module> <!-- 第一个java项目子模块,当然也可以已打包的形式引入-->
</modules>
修改后:1
2
3
4
5<modules>
<module>../mavenweb</module> <!-- 第一个web项目子模块-->
<module>../mavenadmin</module> <!-- 第二个web项目子模块-->
<module>../mavenjava</module> <!-- 第一个java项目子模块,当然也可以已打包的形式引入-->
</modules>
子模块pom.xml修改以下内容:
修改前:1
2
3
4
5<parent>
<groupId>com.iwooto</groupId>
<artifactId>maventest</artifactId>
<version>${project.version}</version>
</parent>
修改后:1
2
3
4
5<parent>
<groupId>com.iwooto</groupId>
<artifactId>../maventest</artifactId>
<version>${project.version}</version>
</parent>
项目改造就完成啦。我的demo地址