Maven项目的拆分与聚合
Posted siwuxie095
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven项目的拆分与聚合相关的知识,希望对你有一定的参考价值。
---------------------siwuxie095
Maven 项目的拆分与聚合
1、对已有的 Maven 项目 maven-ssh 先拆分,再聚合
(1)拆分思路:将 DAO 层、Service 层、Web 层
的代码以及配置文件分别提取到三个表现上独立的项
目中(实际上并不独立)
(2)聚合思路:对拆分后的项目进行聚合
2、对应到 Maven 中,就是父项目与子模块的概念
(1)父项目将子模块聚合在一起
(2)子模块继承父项目中的依赖
3、具体如下:
(1)ssh-parent(父项目)
(2)ssh-dao(子模块)
(3)ssh-service(子模块)
(4)ssh-web(子模块)
4、父项目和子模块的创建方法
(1)父项目:File->New->Maven Project
(2)子模块:选择父项目,右键->New->Other->Maven->Maven Module
「先有父项目,再有子模块」
注意:创建时要勾选 跳过原型选项 或 跳过骨架选项
5、创建父项目 ssh-parent
注意:打包方式(Packaging)要选择 pom
6、父项目 ssh-parent 目录结构一览:
当前父项目的核心配置文件
pom.xml:
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>com.siwuxie095.ssh</groupId> <artifactId>ssh-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging>
<!-- modules 标签用于配置子模块,其中的 内容无需手动配置,随着子模块的创建, 将自动生成
当然,也可以手动配置 --> <modules> <module>ssh-dao</module> <module>ssh-service</module> <module>ssh-web</module> </modules>
<!-- 归类依赖 --> <properties> <struts.version>2.3.33</struts.version> <spring.version>4.3.7.RELEASE</spring.version> <hibernate.version>5.0.12.Final</hibernate.version> </properties>
<dependencies>
<!-- +++++++ (1) Struts2 相关 +++++++ -->
<!-- Struts2 相关的基本依赖 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>${struts.version}</version> <!-- 由于 Struts2 和 Hibernate 中都有 javassist, 为避免冲突,留下高版本,排除低版本即可
这里,Struts2 中的 javassist 版本更低 --> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency>
<!-- +++++++ (2) Spring 相关 +++++++ -->
<!-- Spring 相关的基本依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency>
<!-- Spring AOP 相关的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency>
<!-- Spring 单元测试相关的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency>
<!-- +++++++ (3) Hibernate 相关 +++++++ -->
<!-- Hibernate 相关的基本依赖 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency>
<!-- +++++++ (4) SSH 整合相关 +++++++ -->
<!-- Struts2 整合 Spring 相关的依赖 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>${struts.version}</version> </dependency>
<!-- Spring 整合 Web 项目相关的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency>
<!-- Spring 整合 Hibernate 相关的依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency>
<!-- +++++++ (5) 数据库连接相关 +++++++ -->
<!-- JDBC 驱动相关的依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> <scope>runtime</scope> </dependency>
<!-- C3P0 连接池相关的依赖 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency>
<!-- +++++++ (6) 日志相关 +++++++ -->
<!-- 日志相关的依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency>
<!-- +++++++ (7) 其它相关 +++++++ -->
<!-- JUnit 相关的依赖 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
<!-- JSTL 相关的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<!-- servlet-api 相关的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>
<!-- jsp-api 相关的依赖 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency>
</dependencies>
</project> |
父项目中并不进行编码,它的主要作用是:
(1)在 pom.xml 中声明依赖,子模块继承之
(2)在 pom.xml 中将各个子模块聚合到一起
7、创建子模块 ssh-dao
注意:打包方式(Packaging)要选择 jar
8、子模块 ssh-dao 目录结构一览:
(1)当前子模块的核心配置文件
pom.xml:
<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">
<modelVersion>4.0.0</modelVersion>
以上是关于Maven项目的拆分与聚合的主要内容,如果未能解决你的问题,请参考以下文章 |