介绍

有时一个项目依赖其他多个项目,如果打开多个项目窗口,编译和运行还是不方便的,本篇文章就介绍在一个项目中如何加入其他的依赖项目。

项目导入

如果一个项目依赖多个项目,最好导入的时候在一个工程下,引入多个模块,如下添加模块方式:

java 多模块项目如何运行 idea多模块项目运行_IDEA


之后按照提示一步步进行,一般默认下一步即可。导入后最终工程结构如下所示:

java 多模块项目如何运行 idea多模块项目运行_Java_02


最好重新编译一下,否则可能会遇到奇怪的错误。如果是Maven项目,需要在右侧Maven窗口中按照依赖顺序安装下:

java 多模块项目如何运行 idea多模块项目运行_IDEA_03

运行配置

编译成功后再来说下运行测试,首先进行运行配置,如果是Java web或SpringMVC项目,需要配置Tomcat环境:

java 多模块项目如何运行 idea多模块项目运行_Web_04


然后设置配置的名字和运行端口:

java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_05


同时一般下面会提示没有artifacts运行:

java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_06


关于Artifact,其实可以简单理解为打包的文件和规则。可以点击右侧“Fix”按钮,或者直接切换到Deployment页面手动添加,点击右侧的+:

java 多模块项目如何运行 idea多模块项目运行_war包_07


在里面选择要运行的war包:

java 多模块项目如何运行 idea多模块项目运行_IDEA_08


其中ROOT:war是打成war形式,一般用于发布,而下面的ROOT:war exploded是以资源文件的形式打包,方便调试,所以这里选择后者。

手动添加Artifact

如果添加Artifact时发现没有怎么办呢?那只能自己手动来添加了,首先得添加Facets,因为是Web项目,所以添加Web:

java 多模块项目如何运行 idea多模块项目运行_Web_09


然后选择对应的Module:

java 多模块项目如何运行 idea多模块项目运行_IDEA_10


注意自动生成的web.xml路径可能不对,核对一下,如果不对及时修改:

java 多模块项目如何运行 idea多模块项目运行_IDEA_11


同样下面的Web Resource目录也检查一下:

java 多模块项目如何运行 idea多模块项目运行_Web_12


如果是Spring项目,还要用同样方法添加一个Spring的Facet,这里不再赘述。添加后下面警告没有对应的Artifact,点击Fix按钮去创建:

java 多模块项目如何运行 idea多模块项目运行_Web_13


在Artifacts页面先创建一个空的Artifact:

java 多模块项目如何运行 idea多模块项目运行_Web_14


然后输入名字并修改类型:

java 多模块项目如何运行 idea多模块项目运行_Web_15


注意war的输出路径“Output directory”一定要修改正确,默认是out下某个路径,要修改为Module对应的target目录,否则启动Tomcat时会找不到war包:

java 多模块项目如何运行 idea多模块项目运行_IDEA_16


这个Artifact用于打war包,然后再添加一个LNG-manager-service:war exploded,用于说明war包含哪些文件,把刚创建的Facet资源添加进去:

java 多模块项目如何运行 idea多模块项目运行_war包_17


选择对应Module下的Facet:

java 多模块项目如何运行 idea多模块项目运行_Web_18


注意war exploded的输出路径“Output directory”也要修改正确,默认是out下某个路径,要修改为Module对应的target目录,否则启动Tomcat时会找不到war包:

java 多模块项目如何运行 idea多模块项目运行_war包_19


然后再创建WEB-INF路径:

java 多模块项目如何运行 idea多模块项目运行_war包_20


同样方法继续在WEB-INF下创建classes目录,并添加编译输出项:

java 多模块项目如何运行 idea多模块项目运行_IDEA_21


接下来就是添加对应的lib了,在右侧的“Available Elements”窗口栏中有对应Module所需的Lib,右键点击“Put into /WEB-INF/lib”即可加入:

java 多模块项目如何运行 idea多模块项目运行_war包_22


同理创建META-INF目录并加入MANIFEST.MF文件,最终添加完目录入下图所示:

java 多模块项目如何运行 idea多模块项目运行_IDEA_23


最后在LNG-manager-service:war中包含刚刚添加的LNG-manager-service:war exploded:

java 多模块项目如何运行 idea多模块项目运行_IDEA_24


java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_25


最终结果如下:

java 多模块项目如何运行 idea多模块项目运行_Java_26

部署运行

如果我们调试的工程需要启动一个以上的Module,则在文章开始说的“Edit Configurations…”配置Tomcat的Deployment页中依次加入多个war exploded:

java 多模块项目如何运行 idea多模块项目运行_Java_27


项目启动的顺序就是war exploded添加的顺序,当然也可以分成两个配置分别启动。另外注意的一点就是部署后的访问路径,一般添加war exploded后默认的是/XXX_war_exploded路径:

java 多模块项目如何运行 idea多模块项目运行_IDEA_28


同时IDEA也会自动给出访问地址:

java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_29


如果项目需要部署在根路径的话,就修改“Application context”的设置路径:

java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_30


修改后,访问路径会自动替换的:

java 多模块项目如何运行 idea多模块项目运行_java 多模块项目如何运行_31


配置好这些之后,就可以点击运行按钮测试了。。。