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