在 IntelliJ IDEA 中创建基本的 Maven 多模块项目
在 IntelliJ IDEA 中創(chuàng)建基本的 Maven 多模塊項目
筆者的環(huán)境:
- Maven 3.6.3
- JDK 11
- IntelliJ IDEA 2020.2.2 (Ultimate Edition)
??創(chuàng)建 Maven 的多模塊項目的好處有很多,比方說,可以非侵入式地使用其它工程中的模塊、隔離同一個包中不同的類等。這里假設(shè)要創(chuàng)建的多模塊項目不是 Web 項目,而是普通的 Java 項目。這里要創(chuàng)建的是一個 MVC 多模塊項目,方法如下。
在繼續(xù)閱讀本教程之前,需要先完成 Maven 的安裝。關(guān)于 Maven 的安裝,請見筆者的另一篇博客:
Maven 的下載安裝教程:
https://blog.csdn.net/wangpaiblog/article/details/112689500
創(chuàng)建一個 Maven 項目,這個項目將作為多模塊中的父模塊。
創(chuàng)建好之后,應(yīng)該可以看下如下的 pom 文件。
創(chuàng)建子模塊。注意,在創(chuàng)建子模塊時要選擇父模塊,同時正確指定子模塊的路徑。Maven 約定,默認(rèn)為子模塊路徑為父模塊的下一級。建議遵循 Maven 這個默認(rèn)設(shè)定。
創(chuàng)建其它的子模塊。
【小貼士】
??如果在創(chuàng)建模塊時使用合適的 Maven 原型,可以減少創(chuàng)建時的一些步驟。只是要注意,需要在使用 Maven 原型輸入一些變量來避免 IntelliJ IDEA 長時間下載此 Maven 原型。而之所以這里沒有選擇在父模塊中使用 Maven 原型,是因為父模塊不需要做太多的事情。步驟如下:
如圖。
在快要完成 Maven 模塊創(chuàng)建時,在圖中的 Properties 中添加鍵值對 Name-Value:
-
Name: archetypeCatalog
Value: internal
如果不添加此鍵值對,IntelliJ IDEA 將會從 Maven 中央倉庫去獲取上面選擇的 archetype。有過完整安裝 Maven 的讀者可能知道,這個過程可以十分緩慢。而添加此鍵值對之后,則獲取該 archetype 的方式將變?yōu)閮?nèi)部獲取,而使用這種方式構(gòu)建項目的速度將大大提高。
父模塊一般只是用于聚合子模塊,它本身可以沒有實際的 Java 代碼。如果不需要在父模塊中編寫 Java 源代碼,則父模塊中的文件夾 src 可以刪去。
Maven 規(guī)定,聚合模塊的 <packaging/...> 要設(shè)置為 pom,同時作為父模塊,應(yīng)該在父模塊的 pom 文件中寫明它的子模塊。
(注意:在 Maven 中,聚合模塊與父模塊本質(zhì)上是完全不同的、互相獨立的概念。但為了減少麻煩,一般會讓聚合模塊也同時是父模塊。)
另外,在設(shè)置完之后,IntelliJ IDEA 右側(cè)應(yīng)該會顯示相應(yīng)的各模塊。
為了便于各模塊之間的互相依賴,應(yīng)該在父模塊中設(shè)置這些依賴。
(注意:在父模塊中,應(yīng)該使用 <dependencyManagement/...>,而不要直接使用 <dependencies/...>。因為直接使用 <dependencies/...> 會讓子模塊引入不必要的依賴。
編程的一個原則就是,不要做多余的事情。要記住,冗余代碼就是地雷。如果不希望日后的開發(fā)成為災(zāi)難,那最好不要偷懶。)
現(xiàn)在,Maven 的多模塊項目的骨架已經(jīng)搭成。各模塊中的文件夾 Java 即為 Java 源代碼目錄。
各模塊的 pom 文件示例代碼如下。
-
父模塊 mvc 的 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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.genius.mvc</groupId><artifactId>mvc</artifactId><version>1.0</version><packaging>pom</packaging><name>mvc</name><modules><module>model</module><module>view</module><module>service</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project_version>1.0</project_version></properties><dependencyManagement><dependencies><dependency><groupId>org.genius.mvc</groupId><artifactId>model</artifactId><version>${project_version}</version></dependency><dependency><groupId>org.genius.mvc</groupId><artifactId>view</artifactId><version>${project_version}</version></dependency><dependency><groupId>org.genius.mvc</groupId><artifactId>service</artifactId><version>${project_version}</version></dependency></dependencies></dependencyManagement></project> -
子模塊 model 的 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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>mvc</artifactId><groupId>org.genius.mvc</groupId><version>1.0</version></parent><artifactId>model</artifactId><name>model</name></project> -
子模塊 view 的 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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>mvc</artifactId><groupId>org.genius.mvc</groupId><version>1.0</version></parent><artifactId>view</artifactId><name>view</name></project> -
子模塊 controller 的 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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><artifactId>mvc</artifactId><groupId>org.genius.mvc</groupId><version>1.0</version></parent><artifactId>controller</artifactId><name>controller</name></project>
總結(jié)
以上是生活随笔為你收集整理的在 IntelliJ IDEA 中创建基本的 Maven 多模块项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用 exe4j 将 JAR 包制成免安
- 下一篇: JUnit 5 常用注解与方法