如果我做出改变,我显然必须重复这个繁琐的过程.我使用Intellij Ultimate 13.1.6,我知道可以通过基于this guide的IDE完成所有这些.
所以在我开始之前,我在我的基地运行mvn clean,删除目标目录.
现在开始我进入项目结构 – >人工制品并创建了一个新的Web应用程序:存档.我将其命名为project_name,默认情况下具有不同的输出目录(baseDir / out / artifacts / project_name对baseDir / target),我将所有的默认值都保留下来,然后按OK.
现在我去运行 – >使用以下settings编辑配置并创建新的本地Tomcat服务器
在“部署”选项卡中,我添加了在我的“启动之前”中构建的工件,如我的图片所示.很简单
但是,每当我通过Intellij运行服务器,它会成功启动,但没有部署任何内容.我得到错误:
Artifact project_name:com.intellij.javaee.oss.admin.jmx.JmxAdminException:com.intellij.execution.ExecutionException:/Users/path/to/workspace/project_name/out/artifacts/project_name/project_name.war找不到网络模块.
而且我仔细检查我的目录,如同错误所见,没有任何东西被创建.甚至没有out目录.
我究竟做错了什么?我知道一个解决办法是回到终端,运行mvn clean install和所创建的.war文件,将其放入部署配置中.我觉得这更像是一个黑客,因为我仍然通过命令行执行,如果我没有它已经构建,我不能将目标设置为目录来查找战争文件.
任何帮助都不胜感激.
解决方法
1)使用Build>手动构建工件构建文物.
2)验证工件是否在预期输出目录(out / artifacts / xxx)中.
3)如果没有,请转到文件>项目结构>文物
4)选择有问题的工件文件(在这种情况下为project_name).
5)验证输出目录是否正确.可以尝试自己创建这个目录,以防IntelliJ不这样做(虽然这会让我感到意外)
6)验证内容是否正确.
7)可选地,当您运行服务器时,选中“Build on make”始终具有最新版本的代码.
请注意,为了将WAR文件部署到Tomcat,您应该更喜欢使用分解的WAR.这使得部署/测试/调试显着更快.