從對 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>