Rajat Gupta
Rajat Gupta

Reputation: 26597

Reduce war size for frequent redeployments(uploads) to a remote server

While development I need to frequently update my web app source code & deploy the updated war to a remote Tomcat server. Uploading a big war(25MB) takes too long(around 30 min) on my connection which is very unproductive. Is there any way I could reduce the war size ? There are a lot of external dependencies in my project. Could I deploy just the changes(may be dependencies remain intact) ?

Upvotes: 3

Views: 3686

Answers (4)

damoeb
damoeb

Reputation: 164

You can use git hooks (http://www.git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). Altough, this requires a git repository on your webserver. Deployments may triggered by push events.

Upvotes: 1

mac
mac

Reputation: 5647

Actually, if exploded war deployment is an option for you then you could use kwatee. It's a free and unrestricted tool (I'm the author) with a simple web interface (or CLI automation) that can do incremental exploded war updates and many other things.

Upvotes: 0

Mark Thomas
Mark Thomas

Reputation: 16625

It depends how much control you have over the upload process. If you have remote access to the filesystem, the following should work:

  • Upload the WAR
  • Let Tomcat expand it
  • Stop Tomcat
  • Delete the WAR
  • Start Tomcat
  • Tomcat should run your app from the expanded directory
  • Upload changed files only and replace the old ones in the expanded directory
  • For static files, no further action is necessary
  • If up update classes or JARs, you'll need to restart Tomcat

Upvotes: 5

MaVRoSCy
MaVRoSCy

Reputation: 17839

What you are asking (Could I deploy just the changes?) cannot be done. There are other things you can do though to reduce the file size of your war file:

  1. You can place libraries in tomcat's common directory (tomcat-dir/common/lib) and remove them from your dependencies in your war file (Does Tomcat load the same library file into memory twice if they are in two web apps?).
  2. Place static file on a cdn or another web application on your tomcat (that would require code modification though)

Upvotes: 2

Related Questions