在 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: archetypeCatalogValue: internal


-
-
如果不添加此键值对,IntelliJ IDEA 将会从 Maven 中央仓库去获取上面选择的 archetype。有过完整安装 Maven 的读者可能知道,这个过程可以十分缓慢。而添加此键值对之后,则获取该 archetype 的方式将变为内部获取,而使用这种方式构建项目的速度将大大提高。




-
-
父模块一般只是用于聚合子模块,它本身可以没有实际的 Java 代码。如果不需要在父模块中编写 Java 源代码,则父模块中的文件夹 src 可以删去。

-
Maven 规定,聚合模块的
要设置为 pom,同时作为父模块,应该在父模块的 pom 文件中写明它的子模块。(注意:在 Maven 中,聚合模块与父模块本质上是完全不同的、互相独立的概念。但为了减少麻烦,一般会让聚合模块也同时是父模块。)

-
另外,在设置完之后,IntelliJ IDEA 右侧应该会显示相应的各模块。

-
为了便于各模块之间的互相依赖,应该在父模块中设置这些依赖。
(注意:在父模块中,应该使用
,而不要直接使用。因为直接使用会让子模块引入不必要的依赖。编程的一个原则就是,不要做多余的事情。要记住,冗余代码就是地雷。如果不希望日后的开发成为灾难,那最好不要偷懒。)

-
现在,Maven 的多模块项目的骨架已经搭成。各模块中的文件夹 Java 即为 Java 源代码目录。
-
各模块的 pom 文件示例代码如下。
-
父模块 mvc 的 pom 文件:
<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.0modelVersion><groupId>org.genius.mvcgroupId><artifactId>mvcartifactId><version>1.0version><packaging>pompackaging><name>mvcname><modules><module>modelmodule><module>viewmodule><module>servicemodule>modules><properties><project.build.sourceEncoding>UTF-8project.build.sourceEncoding><project_version>1.0project_version>properties><dependencyManagement><dependencies><dependency><groupId>org.genius.mvcgroupId><artifactId>modelartifactId><version>${project_version}version>dependency><dependency><groupId>org.genius.mvcgroupId><artifactId>viewartifactId><version>${project_version}version>dependency><dependency><groupId>org.genius.mvcgroupId><artifactId>serviceartifactId><version>${project_version}version>dependency>dependencies>dependencyManagement>project> -
子模块 model 的 pom 文件
<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.0modelVersion><parent><artifactId>mvcartifactId><groupId>org.genius.mvcgroupId><version>1.0version>parent><artifactId>modelartifactId><name>modelname>project> -
子模块 view 的 pom 文件
<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.0modelVersion><parent><artifactId>mvcartifactId><groupId>org.genius.mvcgroupId><version>1.0version>parent><artifactId>viewartifactId><name>viewname>project> -
子模块 controller 的 pom 文件
<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.0modelVersion><parent><artifactId>mvcartifactId><groupId>org.genius.mvcgroupId><version>1.0version>parent><artifactId>controllerartifactId><name>controllername>project>
-
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
