- JDK:1.8
- Maven:3.3.9
- 三层架构:基于 SpringMVC 的 UI 层、业务逻辑层以及数据访问层
从对 Maven 的了解可以看出,三层架构的创建在于对文件夹的合理安排,他们通常是主子结构,其次还要运用到 Maven 的聚合和继承。
基本的 Archetype 搭建
创建 sln 组件。直接使用空架构创建即可:
顺便建立项目,并完善项目的名称和路径等信息:
项目(工程)的名称:以大写字母开头,拟定一个正式的名称。
项目(工程)的位置:最好是一个全新的文件夹,文件夹名称也最好与项目的名称保持统一。
模块的名称与 artifactId 相同,方便识别。
模块的位置也放置在一个全新的文件夹里,其名称跟模块的名称也保持统一。
完善 sln 组件
- sln 一方面起聚合作用,一方面作为继承机制的基类,所以它不需要实质内容,仅需一个 pom.xml 即可:
故而删除 src 这一文件夹,从而剩下 pom.xml:
完善 sln 的 pom.xml
- 设置 packaging 为 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>com.ruanxi.monkey</groupId>
<artifactId>monkey-sln</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Monkey-sln</name>
<!--聚合-->
<modules>
<module>monkey-web</module>
</modules>
<!--参数-->
<properties>
<springframework.version>4.3.2.RELEASE</springframework.version>
<junit.version>4.12</junit.version>
</properties>
<!--依赖管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
module元素的值采用的是 artifactId,即当sln项目与各子项目是“主子目录”结构,而如果是“平级目录”结构就需要在前面追加“../”。
基于 sln 解决方案创建 Web 子组件模块
直接在 sln 上进行右键操作。通过这种创建方式,就可以自动建立起“聚合”和“继承”配置(这主要仰赖于 IDEA 开发环境)。
创建 Web 组件可以选择 webapp 这一 Archetype 架构来创建,它可以自动创建 WEB-INF 目录:
新建 web 组件
确保 web 组件放置在 sln 的子目录中,成为“主子目录”结构,这与微软 VS 的解决方案很相像。
文件夹的主子结构:
这样,在继承机制中,web 的 pom.xml 要想寻找到 sln 的 pom.xml,只需要注明“../pom.xml”即可(实际上,Parent 元素的 relativePath 的默认值就是这个):
这时,检查一下 sln 的 pom.xml 里是否将 web 做了聚合配置(modules),并检查 web 组件自己在继承机制上的配置(parent)。
sln pom.xml:
web 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/maven-v4_0_0.xsd">
<parent>
<artifactId>monkey-sln</artifactId>
<groupId>com.ruanxi.monkey</groupId>
<version>2.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>monkey-web</artifactId>
<packaging>war</packaging>
<name>Monkey-web</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>monkey-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
<build>
<finalName>MonkeyPackage</finalName>
</build>
</project>