从对 Maven 的了解能够看出,三层架构的建立在于对文件夹的合理安排,他们一般是主子结构,其次还要运用到 Maven 的聚合和继承。javascript
项目(工程)的名称:以大写字母开头,拟定一个正式的名称。
项目(工程)的位置:最好是一个全新的文件夹,文件夹名称也最好与项目的名称保持统一。java
模块的名称与 artifactId 相同,方便识别。
模块的位置也放置在一个全新的文件夹里,其名称跟模块的名称也保持统一。web
故而删除 src 这一文件夹,从而剩下 pom.xml:spring
<?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项目与各子项目是“主子目录”结构,而若是是“平级目录”结构就须要在前面追加“../”。apache
直接在 sln 上进行右键操做。经过这种建立方式,就能够自动创建起“聚合”和“继承”配置(这主要仰赖于 IDEA 开发环境)。架构
建立 Web 组件能够选择 webapp 这一 Archetype 架构来建立,它能够自动建立 WEB-INF 目录:app
新建 web 组件webapp
确保 web 组件放置在 sln 的子目录中,成为“主子目录”结构,这与微软 VS 的解决方案很相像。maven
文件夹的主子结构:ui
这样,在继承机制中,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>