IDEA多模块工程和利用tomcat插件启动
Posted yintianhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA多模块工程和利用tomcat插件启动相关的知识,希望对你有一定的参考价值。
多模块开发的好处:
之前没怎么接触过写多个模块,大部分时间都是一股脑打包在一个jar里面,但随之带来的问题也是显而易见的,假设DAO层有一个部分需要修改,但是最后却需要打包整个项目,
这样其实做了很多无意义的工作,那么如果把DAO层单独分离出来,单独打包为jar,提升开发效率。除此之外,就像把DAO,Service,表现层分开的目的一样,分成不同的模块
来实现解耦,各个模块负责自己的功能,并且也可以使用其他项目中。最后,多个模块也跟利于分工,每个团队负责不同的模块,提高效率。
IDEA创建多模块工程:
与Eclipse不同的是,IDEA中没有workplace这个概念,在IDEA中只有project和module,project是项目中的最顶级的单元,其次就是module,也就是一个project包含多个module。
project和各个module的关系可以这样表示:
parent是父工程,所有的子模块都需要依赖它,再往下,将项目划分为工具类,DAO和service以及表现层(web),每一个模块都包含一个自己的pom文件,来规定自己的打包方式以及其他依赖。
website-parent--pom.xml (pom)
|
|
|-- website-util
| |-- pom.xml (jar)
|
|-- website-dao
| |-- pom.xml (jar)
|
|-- website-service
| |-- pom.xml (war)
|
|-- website-web
|-- pom.xml (war)
第一步就是创建一个工程了,至于是建空工程与否依情况而定,以建空工程为例,名app
----》
之后就是新建一个父模块,可以采用maven的骨架来构建,选择quickstart,暂且命名parent,之后一直next
----》
父模块没大改动,在pom文件添加打包方式为pom。
<packaging>pom</packaging>
之后根据自己的项目结构,继续构建module,如果该部分没有特殊的功能,比如表现层需要webapp目录,创建的时候跳过骨架选择即可,
如果有特殊功能可根据骨架创建。当然,如果不确定直接跳过骨架即可,骨架就是一个搭好的模型罢了,在没有骨架的模块上也可以自己创建相应的目录结构来实现功能。
重点是把各个的模块的pom文件的依赖和打包方式处理好,这对之后启动有着很重要的作用。
创建好的项目如图:
tomcat插件启动:
在需要启动的模块的pom文件添加依赖:
<!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <path>/</path> <port>8081</port> <server>tomcat7</server> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
参数解释:
path:访问的路径
port:启动的端口
server:服务器名称
uriEncoding:字符编码
这里我在Service和Web层都用了这个插件,但是单凭这个插件是无法启动的,因为是多模块的项目,而且Service和Web层都依赖于某些层,所以必须先将其他
模块打包好,才能正常启动。
打包的正确顺序是,父->子
以上图为例,先parent再common,再到manager,这些进行后才实现了dao,interface这些层的打包,之后的Service和web依赖于它们,才能正常启动。
IDEA对maven提供了很好的支持,找到Maven Project选项,可以看到如下
这里实际上是代表了模块的一个生命周期,所以要使得其他maven模块也能依赖它们,只需将它们安装到本地maven库中就行。
点击install,再查看本地的maven库:
可以看到本地仓库中已经有了相应的jar包
这些工作完成之后就是启动了,这里我将Service设在8080,将web设在8081
然后配置好名字和需要其他配置
在command line行写上tomcat7:run (如果后面的7是指tomcat的版本。)
apply之后回到页面点击运行符号。
Service启动:
Web同样的方法启动:
以上是关于IDEA多模块工程和利用tomcat插件启动的主要内容,如果未能解决你的问题,请参考以下文章