Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse: Is it possible to publish Javascript edits to an external Tomcat instance

I am converting an application from Flex to Javascript. My workflow within Eclipse for Flex was to use Maven to start my Java web app in Tomcat and then have Eclipse configured to compile edited Actionscript files to a SWF and save it to my exploded WAR directory (that Maven/Cargo uses).

It worked very well for a long time allowing me to edit actionscript source code, flip over the browser, refresh the screen and see the changes.

I am new to Javascript however, and am struggling to get the same workflow up and running. The part I don't understand is how to tell Eclipse that I would like my edited Javascript files to be written out to a particular directory (that contains the exploded WAR). In my WAR project (a WTP dynamic web project) there is something that looks like a Javascript build path called "Javascript resources", but there is no output directory.

I would really like to continue to run Tomcat and Jetty via Maven if at all possible. I realize I can do what I want via WTP (M2E-WTP), but would prefer to use Maven/Cargo.

like image 715
HDave Avatar asked Feb 29 '12 03:02

HDave


2 Answers

Denis's suggestion to create custom builder is probably best solution if you want to continue using pure Maven/Cargo approach with Eclipse.

If you are deploying to an exploded war directory, then another similar idea would be to use a File Synchronization plugin. These will automatically copy modified files to configured folders. See:

  • http://andrei.gmxhome.de/filesync/
  • https://wiki.onehippo.com/display/CMS7/Use+Filesync+Eclipse+plugin+for+faster+turn+around

-------------

FWIW, I don't think Maven:Tomcat/Cargo plugins are ideal for real-time web development, especially on the frontend side of things. They are useful mainly for controlled deployments or bootstrapping a server without initial setup. My thoughts:

Eclipse WTP used to be great for real-time web development, but I stopped using it a few years back as it just got way too hard to make it work correctly in a Maven environment. Fwiw, my preferred approach these days looks like this:

  • Do not install or use Eclipse WTP.
  • Use m2eclipse to integrate Maven with Eclipse.
  • Use Maven to do clean builds and generate exploded WAR directory in target folder.
  • Setup independent Tomcat server to load webapp from the exploded target folder.
    • I suspect the tomcat setup/startup could be integrated into Maven. It's not worth the extra complexity to me though.

Then, I configure JRebel (automatically via Maven) to handle java and web resource file changes. With this setup, I almost never have to redeploy or restart Tomcat. All changes (java, html, js, etc.) are seen immediately.

I think the same setup could be used without JRebel (for non-java files only) by configuring the web source folders as source folders in Eclipse with custom target output path being the corresponding directory in the exploded war directories. If that didn't work, then it would definitely work by using the custom builder or file synchronization solutions mentioned above.

like image 73
kaliatech Avatar answered Nov 17 '22 11:11

kaliatech


Eclipse introduces the concept of "builder" to build a project. It comes with hardcoded builders such as the java compiler or the war builder of WTP.

But eclipse also enable to setup your own Builder using ant files : on your project, right click the project properties, go to section Builders, click on the new button.

You can use arguments to your ant file and use variables defined in by eclipse to build them

Do not forget to fill the refresh tab if you want eclipse to by notified of the produced files.

Do not forget the fill the Build options tab, section "Specify working set of relevant resources" in order to have your builder called each time a source used by the build file is changed inside eclipse.

Also go to the "targets" tab to specify during which type of build phase your ant file is called and which target is called.

I knwo this solution may not be the best for you since your build process will be described more than once but it may help you achieve your goal.

like image 37
Denis R. Avatar answered Nov 17 '22 11:11

Denis R.