Reputation: 1866
My basic workflow is in terminal mvn clean install
on my base directory. This creates a target directory with a WAR file. I copy that war file into the webapps directory of my Tomcat.
If I make changes I obviously have to repeat the process which is tedious. I am using Intellij Ultimate 13.1.6 and I know it is possible to have all of this done through the IDE based on this guide.
So before I begin I run mvn clean
on my base which removes the target directory.
Now to start I when into the Project Structure --> Artifacts and created a new Web Application: Archive. I named it project_name and it had a different output directory by default (baseDir/out/artifacts/project_name vs baseDir/target) which I left everything default and hit ok.
Now I go to Run --> Edit Configurations and create a new Local Tomcat Server using the following settings
and in the Deployment Tab I add the artifact which is built in my Before launch as seen in my picture. Pretty straightforward.
However, whenever I run the server through Intellij it successfully starts but nothing is deployed. I get the error:
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.
And I double check my directory and as seen in the error, nothing is created. Not even the out directory.
What am I doing wrong? I know one workaround is to go back to terminal, run mvn clean install
and with that .war file that is created, put that into the deployment configuration. I felt like that was more of a hack since I am still doing it through command line and if I don't have it already built I can't set the target as a directory to find the war file.
Any assistance is appreciated.
Upvotes: 39
Views: 126136
Reputation: 316
I was also facing the same issue in tomacat 9 . It seems intellij doesn't create "out" folder automatically (or in my case it didnt create it). so I built "War exploded" instead of "war" file , and that worked for me.follow the bellow steps:
Delete the existing "war" file ( project Structure -> artifacts -> ) then select the "war" file and delete it.
Invalidate cache
Then create an "war exploded" file (project Structure -> artifacts -> "+" sign(Add) -> Web Application: Exploded -> From modules(select your module) ).
Then from "Build" menu manually build the created "exploded war" file.
Upvotes: 0
Reputation: 5932
Checklist of things you can do to verify where things go wrong:
Note that for deploying WAR files to a Tomcat, you should prefer to use the exploded WAR. This makes deploying/testing/debugging significantly faster.
Upvotes: 51
Reputation: 26876
I get this issue, the reason is in Project Structure, the Artifacts' Output directory is not really exists:
Solutions:
File -> Project Structure
Upvotes: 6
Reputation: 3864
I had the same problem and none of the above solutions solved the problem. Sharing it here in case someone else encounters the same issue.
The Tomcat server in my case was configured to run the JMX port on 18099 instead of 1099. Therefore the artifact was never deployed since the JMX port used in the IntelliJ Tomcat configuration by default is 1099.
Changing it to 18099 or removing that particular Tomcat configuration solved the issue.
The bottom line: if you want your artifact deployed, make sure the JMX port configured in IntelliJ matches the JMX port that is actually used by your Tomcat server.
Upvotes: 5
Reputation: 1032
I tried the above solutions but the WAR file didn't work when I deployed it to the tomcat server. Instead of the above solutions, simply type mvn clean
and then mvn install
in the terminal window. Your WAR file is now located in
ProjectName/target/
Upvotes: -1
Reputation: 1667
Check the output directory path. NOTE that using ~
in the path won't work.
Upvotes: 0
Reputation: 35997
I got this error when I tried to launch an app by using Run. The problem was that for some reason the WAR file wasn't deployed even after selecting Build->Build Artifacts. Solution: I closed Idea then reimported the project and choose as artifact war-exploded. This time the deploy worked.
Upvotes: 10