我的基本工作流程在我的基本目录的终端mvn clean install
中。这将创建一个带有WAR文件的目标目录。我将该war文件复制到我的Tomcat的webapps目录中。
如果我做出改变,我显然必须重复这个单调乏味的过程。我正在使用Intellij Ultimate 13.1.6,我知道可以通过基于this guide的IDE完成所有这些工作。
所以在我开始之前,我在我的基础上运行mvn clean
,删除了目标目录。
现在开始我进入项目结构 - >工件并创建了一个新的Web应用程序:存档。我将它命名为project_name,默认情况下它有一个不同的输出目录(baseDir / out / artifacts / project_name vs baseDir / target),我将所有内容保留为默认值并点击确定。
编辑配置并创建新的本地Tomcat服务器在部署选项卡中,我添加了在我的图片中看到的Before Before启动中构建的工件。很简单。
但是,每当我通过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 not found for the web module.
我仔细检查我的目录,如错误中所示,没有创建任何内容。甚至没有out目录。
我做错了什么?我知道一个解决方法是返回终端,运行mvn clean install
并使用创建的.war文件,将其放入部署配置中。我觉得这更像是一个黑客攻击,因为我仍然通过命令行执行它,如果我没有它已经构建,我不能将目标设置为查找war文件的目录。
感谢任何帮助。
答案 0 :(得分:28)
您可以采取的措施清单,以验证出现问题的地方:
1)使用Build>手动构建工件。构建工件。
2)验证工件是否在预期的输出目录中(out / artifacts / xxx)。
3)如果没有,请转到文件>项目结构>工件
4)选择有问题的工件文件(本例中为project_name)。
5)验证输出目录是否正确。也可以尝试自己创建这个目录,以防IntelliJ没有这样做(虽然这会让我感到惊讶)
6)验证内容是否正确。
7)可选择检查" Build on make"在运行服务器时始终部署最新版本的代码。
请注意,要将WAR文件部署到Tomcat,您应该更喜欢使用爆炸的WAR。这使得部署/测试/调试速度明显加快。
答案 1 :(得分:7)
当我尝试使用Run启动应用时出现此错误。问题是由于某种原因,即使在选择 Build-> Build Artifacts 之后,也未部署WAR文件。 解决方案:我关闭了Idea然后重新导入项目并选择 war-explosion 工件。这次部署有效。
答案 2 :(得分:3)
我遇到这个问题,原因是在Project Structure中,Artifacts的Output目录并不存在:
<强>解决方案:强>
答案 3 :(得分:1)
我遇到了同样的问题,上述解决方案都没有解决问题。在此处分享以防其他人遇到相同的问题。
我的案例中的Tomcat服务器被配置为在18099而不是1099上运行JMX端口。因此,工件从未部署,因为默认情况下IntelliJ Tomcat配置中使用的JMX端口是1099.
将其更改为18099或删除特定的Tomcat配置解决了这个问题。
底线:如果您希望部署工件,请确保IntelliJ中配置的JMX端口与Tomcat服务器实际使用的JMX端口匹配。
答案 4 :(得分:0)
检查输出目录路径。请注意,在路径中使用~
将不起作用。
答案 5 :(得分:0)
我在 tomacat 9 中也遇到了同样的问题。似乎intellij 不会自动创建“out”文件夹(或者在我的情况下它没有创建它)。所以我建立了“战争爆炸”而不是“战争”文件,这对我有用。按照以下步骤:
删除现有的“war”文件(project Structure -> artifacts -> )然后选择“war”文件并删除它。
使缓存无效
然后创建一个“战争爆炸”文件(项目结构 -> 工件 -> “+”号(添加) -> Web 应用程序:爆炸 -> 从模块(选择你的模块))。
然后从“Build”菜单手动构建创建的“exploded war”文件。
答案 6 :(得分:-1)
我尝试了上述解决方案,但是当我将它部署到tomcat服务器时,WAR文件并没有起作用。只需在终端窗口中键入mvn clean
然后mvn install
,而不是上述解决方案。您的WAR文件现在位于
ProjectName/target/