以下的内容只涉及了如何建立,关于为什么这样建立,用的什么建立请参考pom.xml中的相关内容。
对于多模块的使用,这里大致可以划分为3种模块类型:Boot类型、Module类型、Startup类型。
这一章介绍如何基于JEES来建立Boot类型和Module类型的模块。
第一步,新建Maven项目:
1. File->New->Project...
2. Maven->Next->输入GroupId和ArtifactId->Next->选择项目的根目录,并修改配置细节->Finish
3. 项目建立好之后,会在右下角提示:Maven projects need to be imported,这里建议使用手动的Import Changes选项。
Boot类型的模块其实就是项目的基础模块,后续的所有模块都将使用boot作为父模块来使用。
它的具体作用包含这几个部分:子模块的关系<modules>,生产环境的管理<profiles>,公共的自定义属性配置<propertie>,
基于JEES方式的配置<parent>和<repositories>,项目建立的标准结构<build>,项目依赖<dependencies>。
4. 修改pom.xml,这里使用jees-boot代替了spring-boot,将spring的相关管理交给jees来处理。并且导入了jees几个功能组件参考:jstl,jdbs,jsts,关于它们的功能特点,请参考github上的readme说明,这里不做具体解释了。地址在文章最下方。
完整的Boot模块pom文件参考:
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>jees.demo</groupId>
<artifactId>jees.demo.boot</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 子模块清单 -->
<modules>
</modules>
<!-- 配置生产环境 -->
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
</properties>
</profile>
<profile>
<id>prov</id>
<properties>
</properties>
</profile>
</profiles>
<!-- 项目自定义属性 -->
<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>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
<!-- 父模块使用jees-boot替换spring-boot-->
<parent>
<groupId>com.github.aiyoyoyo</groupId>
<artifactId>jees-boot</artifactId>
<version>1.1.8-SNAPSHOT</version>
<relativePath/>
</parent>
<!-- 下载jees相关包所需要的oss环境配置 -->
<repositories>
<repository>
<id>oss</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<!-- 配置所有模块的基础项目Build结构 -->
<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
<testSourceDirectory>src.test</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<excludeDevtools>false</excludeDevtools>
</configuration>
</plugin>
</plugins>
</build>
<!-- 项目依赖项 -->
<dependencies>
<!-- Jees -->
<dependency>
<groupId>com.github.aiyoyoyo</groupId>
<artifactId>jees-jtls</artifactId>
<version>${jees.jtls.version}</version>
</dependency>
<dependency>
<groupId>com.github.aiyoyoyo</groupId>
<artifactId>jees-jdbs</artifactId>
<version>${jees.jdbs.version}</version>
</dependency>
<dependency>
<groupId>com.github.aiyoyoyo</groupId>
<artifactId>jees-jsts</artifactId>
<version>${jees.jsts.version}</version>
</dependency>
<!-- Spring Boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>${spring.boot.version}</version>
<optional>true</optional>
<scope>runtime</scope>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
</dependencies>
</project>
对于生产环境的配置用法除了用于区分开发环境和线上环境,还可以利用这个特点来生成拥有部分相同或者公共功能的多应用。
例如现在有用户模块U,功能模块A,功能模块B,然后应用A包含模块U和A,应用B包含模块U和B,这时可以利用maven指定不同的打包环境来生产应用A和B。该方式在开发环境中不是很友好,但对于应用的模块可以做到在线上环境中的重复利用。
第二步,建立Module类型模块
1. File->New->Module...
2. Maven->Next->输入GroupId和ArtifactId->Next->选择项目的根目录,并修改配置细节->Finish
请参考图中内容,注意细节的部分有2个,一个是module name,一个是目录结构。module name会影响idea环境配置中的结构关系,目录结构则是文件存储关系。这里的配置方式是以每个module都是独立的包来使用作为标准的,可以根据个人喜好和项目结构自己调整。
3. Pom文件的变更会在右下角提示是否导入,始终建议选择手动的Import Changes选项,不要选择Enable Auto Import选项。
4. 在Module类型的模块中,仅需要配置自己独有的依赖即可,公共的可以加入到boot的Pom文件中。
完整的Module模块pom文件参考:
<?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>jees.demo.boot</artifactId>
<groupId>jees.demo</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../boot</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>jees.demo</groupId>
<artifactId>jees.demo.mudule</artifactId>
<!-- 项目依赖项 -->
<dependencies>
</dependencies>
</project>
下一章将介绍Startup类型的模块,因为涉及开发和打包的细节操作,所以独立一篇进行介绍。
JEES的下载地址:https://github.com/aiyoyoyo/jeesupport