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(子模块)

   

3ssh-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项目的拆分与聚合的主要内容,如果未能解决你的问题,请参考以下文章

转帖:maven maven项目构建ssh工程(父工程与子模块的拆分与聚合)

06 Maven拆分聚合项目

maven_进阶

maven项目的不同编写格式

Maven聚合模块与继承和Maven的生命周期

Maven聚合模块与继承和Maven的生命周期

(c)2006-2024 SYSTEM All Rights Reserved IT常识