I have a Scala project in Eclipse that I need to package up so I can deploy it to a server. It’s based on Jetty but it runs as a standalone application. It contains Scala classes, Java classes and a number of 3rd party jars.
I assumed there would be some kind of deployment option in the Scala Eclipse plugin but I’ve drawn a blank.
What is the simplest way to package the Scala project into a runnable file so it can be deployed?
Any help greatly appreciated.
Cheers.
After a lot of trial and error, this is the best method I found for packaging the Scala app for distribution:
First, create a Java class to be the main entry point for the application as described by Gary Boon. This allows you to run the application from a JAR with the java command. I found that running a Scala class with the java command is problematic, even when you have the Scala libs on the source path:
Now you can use Eclipse’s Export Runnable JAR command to package up all your classes and libraries into a JAR file. Set the JAR’s main class to the Java entry point. You can also save the Eclipse-generated output settings as an ANT build file so you can make adjustments. Using ANT to create the JAR with a Java entry point yielded best results. You can also package up other JAR dependancies this way which makes it a whole lot simpler when trying to run the JAR on a different host. As a minimum you will need the Scala library and the Scala tools JAR.
If you’re using embedded Jetty, as I am, you can run the server as a Daemon process using the following command (source):
This runs the program as a background process which is independent of the current user session so the process will continue after you logout of the host.