IDEA 创建基于Maven的多模块Web项目
本文权当我的一个笔记。如果你尚未安装 IntelliJ IDEA.请安装后再来看本文。本文参考了此文.
本文只是个创建项目的入门教程,其中不涉及一些理念的探究以及一些名词的解释。
水平有限,对于文中的疏漏错误,欢迎各位斧正。
一. 新建项目
image.png或者点 菜单File ~ create Project 都是一样的。
-
创建ParentProject(主项目)
image.png
这里我们不用点create from archetype. 主项目其实就是个框架,用来包含各个子模块的。
image.png- GroupId: 一般是组织+域名+项目名
- ArtifactId:项目名称。
-
Version:一般用默认即可。
image.png
这一步没什么好说的,就是让你设置项目名称和位置。点Finish就完成了主项目的创建
-
创建webapp模块
点击侧边栏的Project标签来显示Project窗口,在项目上右击创建新的模块。
image.png
image.png
注意这里要选择webapp
image.png
填写你的webapp的ArtifactId
image.png
这一步也没什么好说的,他是让你选择Maven的路径,这里IDEA自带了Maven3,用默认的就可以了。
image.png
同样,这一步让你选择保存位置。也没什么好说的。点Finish后稍等片刻(maven在创建你需要的结构)。
生成好后,当前结构就如下:
image.png -
我们再来创建个webservice模块
和上面创建过程类似,只是这次我们不要选webapp
image.png
创建好类似下面:
image.png -
同样我们再创建个webdao
和创建webservice模块一样,不用选webapp.创建完类似下面:
image.png -
让webapp模块依赖webdao和webservice
image.png
选择Project structure
image.png
image.png
image.png
这样设置依赖后,webapp模块就能访问webservice模块和webdao模块里的public类,但是maven在编译的时候还是会报错,因为maven的 webapp模块 dependency依赖里没有webservice模块和webdao模块。
所以还需要到webapp模块的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>MyWeb</artifactId> <groupId>com.threshold.myweb</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>webapp</artifactId> <packaging>war</packaging> <name>webapp Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.threshold.myweb</groupId> <artifactId>webservice</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.threshold.myweb</groupId> <artifactId>webdao</artifactId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies> <build> <finalName>webapp</finalName> </build> </project>
这样,基本上就算是配置好了。
-
其他配置
-
由于我们的parent主项目只是用来包裹子模块的,所以可以把主Project下的src文件夹删除.
image.png
右击删除src目录即可。
-
webapp模块还缺少java目录。同样打开Project Structure窗口做下面的配置。
image.png
创建好java目录后再点上面的Sources按钮设为源码目录
image.png
设置好后java文件夹会变蓝色。
image.png
同理还需要对webservice模块和webdao模块的java目录设为Sources处理(只是这两个模块不需要创建java文件夹,默认已经有了)
image.png
全部设置好点OK保存配置。
image.png
Project目录还应像上图那样创建包。每个模块的包名都应以你的groupId+artifactID为开头。
-
-
配置Tomcat运行环境
先要下载Tomcat 以及解压到一个目录,这我就不多说了。自己去官网下载吧。
打开配置窗口.png
image.png
image.png
image.png
再点击右边Application Server 旁边的Configure.. 按钮,添加Tomcat 目录
Tomcat-Server.png
下拉选择Tomcat-Server.png
选择Development标签,添加Artifact.png
选择war exploded.png
把update action改下(这步可不做).png
现在默认运行环境就是刚刚配置好的.png -
maven配置优化
我们每个模块可能都需要单元测试,比如JUnit,通常我们会在各个模块pom.xml下添加JUnit的依赖,但是一旦模块很多再加上JUnit的升级,每个模块下的pom.xml都需要更改,增加工作量不说还容易忘记某个模块,这会导致同一个项目可能存在同时依赖某个库的不同版本,而这是我们不想看到的。为了统一管理依赖库的版本,建议将各个子模块所依赖的库信息写到主项目下的pom.xml中。
image.png
在modules下面添加:
<properties> <hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version> <junit.version>4.12</junit.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> </dependencyManagement>
添加好的pom.xml如下:
image.png
在这里提示一下,可以点气泡通知允许自动导入依赖。这样新添加的依赖就自动加入到你的模块中了。
之后再打开各个模块的pom.xml文件,如果有需要的依赖,在子模块中引入即可,而且不需要写依赖的模块的version(因为主项目的pom.xml已经定义了)
image.png
这里对于依赖的子模块,建议使用引用的方式。 -
其他配置
通常maven项目创建好后,即使你安装的jdk是1.8的,但是却使用不了1.8的特性。例如下面的提示:
image.png
解决方案如下,在主项目的pom.xml中加入plugin配置。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
最后整理好的pom.xml如下:
image.png
现在尽情的去写你的Hello Web吧。