Project,項目,也叫做工程。
父子工程中,子模塊會自動繼承父工程的資源、依賴,但子模塊之間是獨立的,不能直接訪問彼此中的資源、類。
就是說我們可以把多個子模塊都要用的資源、依賴提出來,放到父工程中,注意微服務的每個服務都是獨立的,不能這么干。
父子工程的依賴繼承問題
子模塊會繼承父工程的依賴,但並不是所有繼承下來的依賴都有效、還能在子模塊中使用。
作用域是provided、test的依賴,繼承下來都是無效的,需要在子模塊的pom.xml中重新導入。
使用其它子模塊中的類
有時候我們要使用本項目其它子模塊中的類,或者使用其它項目的某個模塊中的類。
常見的情況是:把某個模塊打包為jar,安裝到公司私服,供公司內部使用。
不能直接使用其它子模塊中的類,需要先把要使用的子模塊打包為jar,安裝到倉庫,然后在要用的子模塊的pom.xml中引入依賴。
比如我要在service子模塊中使用dao子模塊:
(1)對dao子模塊中的install雙擊,打包為jar,安裝到倉庫

(2)在service子模塊的pom.xml中導入依賴:
<dependency>
<groupId>org.example</groupId>
<artifactId>dao</artifactId>
<version>1.0</version>
</dependency>
對應dao模塊的公司|組織名、模塊名、版本號。
父子工程的2種啟動方式
(1)通過Maven的tomcat插件啟動
在父工程的pom.xml中添加tomcat插件
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <!--配置tomcat的端口號、將工程映射到哪個路徑(域名后面的工程名)、uri編碼字符集--> <configuration> <port>8080</port> <path>/ssm</path> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
tomcat插件啟動方式一:

如果沒有出現tomcat7,刷新一下、重新導入。
tomcat插件啟動方式二:

說明
- 這2種方式都是通過Maven的tomcat插件來啟動,都需要在父工程的pom.xml中配置tomcat插件。
- 其實真正部署到tomcat上的是web模塊,所以也可以在web模塊的pom.xml中配置tomcat插件,啟動該web模塊。
- 如果要引用其他模塊中的類,都需要先install安裝到本地倉庫或私服,然后在pom.xml中添加該模塊的依賴。
(2)使用外置的tomcat來啟動

無需在pom.xml中配置tomcat插件。
jar包鎖定
公司往往要在父工程的pom.xml中統一項目的jar包版本,但如果在子模塊的pom.xml中導入了同名、不同版本的jar包,會覆蓋父工程傳遞的同名依賴。
為防止這種問題,需要在父工程的pom.xml中鎖定jar包版本。
<!--jar包鎖定--> <dependencyManagement> <dependencies> <dependency></dependency> <dependency></dependency> <dependency></dependency> </dependencies> </dependencyManagement> <!--依賴--> <dependencies> <dependency></dependency> <dependency></dependency> <dependency></dependency> </dependencies>
就是把<dependencies>拷貝一下放到<dependencyManagement>中。鎖定之后,如果子模塊中出現同名的依賴,以父工程傳遞的依賴(鎖定的依賴)為准。
需要注意的是<dependencyManagement>只有鎖定jar包的功能,不會導入jar包。
統一管理jar包版本
<!--統一管理jar包版本--> <properties> <!--元素名即key,隨意取但盡量見名知義,通過${key}來引用--> <mybatis.version>3.5.4</mybatis.version> </properties> <!--jar包鎖定--> <dependencyManagement> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies> </dependencyManagement> <!--依賴--> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies>
把版本都寫在<properties>中,使用${ }引用即可,這樣維護起來方便。
