【SaaS-Export项目】02 - 项目环境的搭建 -父子项目工程搭建 - 子工程依赖关系搭建(Maven)

it2025-10-11  9

文章目录

1. Maven父子项目介绍父子项目的优点: 2 创建SaaS-Export项目的父子工程2.1 项目父子工程模块图注意事项2.2 创建父项目export_parent 3. 创建其他子工程(都需要继承父工程)3.1 注意事项【**】3.2 创建子工程export_domain、export_dao、export_system_service3.3 创建web子工程`export_web_manager`3.4 搭建成功之后的结构图 4. 配置子工程之间的依赖关系4.1 子工程export_dao依赖子工程export_domain4.2 子工程export_system_service依赖子工程export_dao4.3 子工程export_web_manager依赖子工程export_service 5. 测试环境是否搭建成功5.1 在export_domain子工程中创建Company公司类,看其他子工程能否访问到5.2 在export_dao中引用export_domain的java类Company 项目的文件目录结构大概是这样的:

1. Maven父子项目介绍

  父项目就是一个project,子项目就是module模块。

父子项目的优点:

父子工程对于模块的分离程度更高变得更高 非父子工程:当项目不断变大和复杂化,改动与编译都变得困难父子工程开发:改动与编译都变得简单,改动的也只是这一个模块而已,并不会影响其他的模块(修改互不影响,修改编译不影响其他模块) 父子工程使代码更清晰,提高重用性 非父子工程:多个模块都需要重复引入依赖(可能依赖相同)父子工程开发:使用父子工程,则只需要在父工程中引入了,则子工程自动继承(子工程继承父工程的一切)

2 创建SaaS-Export项目的父子工程

2.1 项目父子工程模块图

注意事项

在新建每个父工程/子工程的时候,需要给每个工程打开maven的Lifecycle(maven生命周期)先点击clean,然后点击install(安装至本地库)

2.2 创建父项目export_parent

(1)New -> Project ->选择Maven创建(不需要勾选原型Create from archetype) (2)【重点***】在新建每个父工程/子工程的时候,需要给每个工程打开maven的Lifecycle先点击clean,然后点击install,然后就会打包成jar包,其他模块就能使用 然后就会将项目打包成jar包 控制台输出了install安装至本地库的路径 通过路径查看本地仓库:

(3)添加父项目需要的依赖pom.xml 子工程继承父工程,能够用父工程的依赖包

<!-- 定义依赖的版本号 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <spring.version>5.2.9.RELEASE</spring.version> <pagehelper.version>5.1.8</pagehelper.version> <servlet-api.version>2.5</servlet-api.version> <dubbo.version>2.8.4</dubbo.version> <zookeeper.version>3.4.7</zookeeper.version> <zkclient.version>0.1</zkclient.version> <mybatis.version>3.4.5</mybatis.version> <mybatis.spring.version>1.3.1</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> <mysql.version>5.1.32</mysql.version> <druid.version>1.0.9</druid.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jackson.version>2.9.5</jackson.version> </properties> <!-- 定义依赖 --> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- Dubbo依赖包 --> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.11.0.GA</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <!--web基础包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- mybatis分页插件 --> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- spring整合rabbitmq --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.0.1.RELEASE</version> </dependency> <!-- xml解析器通用包:CXF WebService框架 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.4</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.4.01</version> </dependency> <!--shiro--> <!--shiro和spring整合--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> <!--shiro核心包--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <!--测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- jackson支持包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!--日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>

3. 创建其他子工程(都需要继承父工程)

父工程export_parent打包为pom:<packaging>pom</packaging>工程默认打包为jar包(不使用maven模板创建的时候Create form archetype ) 子工程export_domain、export_dao、export_system_service打包为jar。 <packaging>jar</packaging>子工程export_web_manager打包为war包 <packaging>war</packaging>

3.1 注意事项【**】

(1) 创建子工程,我们也不需要选择模板,除了最后的web子工程需要选择maven-webapp模板(因为不用模板创建起来比较麻烦,出错删了就比较容易)(2) 一定要选中parent父工程为 【export_parent】(3) 每个模块创建完,第一次,一定要打开maven的Lifecycle先点击clean,然后点击install(4) 每个子工程的pom.xml中都要配置<packaging>标签【***】

3.2 创建子工程export_domain、export_dao、export_system_service

new Moulde -> Maven -> Next -> 选择父工程export_parent,输入子工程名 创建成功之后,打开maven的Lifecycle先点击clean,然后点击install,然后就会打包成jar包(默认打包成jar包,你也可以在pom.xml中定义<packaging>jar</packaging>打包方式,默认就是jar包,如果打包成jar可不写) 子工程打包为jar包

子工程继承父工程的dependencies

相同方式再创建子工程export_dao和子工程export_system_service,记住一定要打开maven的Lifecycle先点击clean,然后点击install

3.3 创建web子工程export_web_manager

需要选择模板maven-webapp,不然创建起来比较麻烦,用模板就算错了删掉重新创建就行 web子工程是打包为war包的<packaging>war</packaging>,因为tomcat只能运行war包,所以我们要打包成war包。

web子工程的pom.xml需要将不需要的全部删掉,最后的模板大概是这样的

<?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>export_parent</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>export_web_manager</artifactId> <packaging>war</packaging> <name>export_web_manager Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> </project>

3.4 搭建成功之后的结构图

4. 配置子工程之间的依赖关系

所谓的依赖关系大概是这么理解的:(父工程P) AB两个子工程,B子工程,依赖A子工程,那么B子工程就可以使用A子工程里面对的java类。 ABC三个子工程,B子工程依赖A子工程,C子工程依赖B子工程,那么C子工程既可以使用B子工程的java类,也可以使用A子工程的Java类。 ABC三个子工程,都继承父工程P,他们都能够使用父工程的jar包。

子工程依赖图

4.1 子工程export_dao依赖子工程export_domain

在子工程export_dao的pom.xml中加入依赖

<!-- 子工程继承父工程,可以使用父工程中的配置--> <!-- B子工程依赖A子工程,可以使用里面的A子工程java类--> <dependencies> <dependency> <artifactId>export_domain</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>

4.2 子工程export_system_service依赖子工程export_dao

在子工程export_system_service的pom.xml中加入依赖

<dependencies> <dependency> <artifactId>export_dao</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>

4.3 子工程export_web_manager依赖子工程export_service

在子工程export_web_manager的pom.xml中加入依赖

<!-- web层调用service层--> <dependencies> <dependency> <artifactId>export_system_service</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>

5. 测试环境是否搭建成功

5.1 在export_domain子工程中创建Company公司类,看其他子工程能否访问到

//企业实体类 public class Company { //对象唯一标记,对应数据库主键 private String id; //公司名称 private String name; //到期时间 private Date expirationDate; //公司地址 private String address; //营业执照 private String licenseId; //法人代表 private String representative; //公司电话 private String phone; //公司规模 private String companySize; //所属行业 private String industry; //备注 private String remarks; //状态 private Integer state; //当前余额 private Double balance; //城市 private String city; }

5.2 在export_dao中引用export_domain的java类Company

package com.xgf.dao.company; import com.xgf.domain.company.Company; import org.junit.Test; public class TestCompanyDao { @Test public void test01(){ Company company = new Company(); System.out.println(company); } }

这样,你的环境就搭建完成了

最新回复(0)