I had an annoying bug while migrating some code from Spring Boot to a legacy Spring application.
Every time i’ve been changing some front end code my Grunt build failed because it couldn’t change the corresponding file(i use a highly sophisticated pipeline to compile assets). At first i was thinking that my VCS was the cause of a problem, but that was not the case. Then i find that build fails after the app server runs.

After a couple of wasted hours some serious googling has helped me to find that jetty was in charge!
The jetty:run command locks the files that you web server is serving to the clients. In case of legacy apps(jsp\jsf) it’s not a problem because static resources got generated on the server. If you’re writing a single-page app(Angular, React all the things) you should be aware of this annoying problem.
The problem can be fixed, but from now on i prefer tomcat in my SBT/MAVEN/GRADLE projects!
![]()
p.s. Spring Boot & Grails use Tomcat since the beginning