首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Eclipse部署Scala项目?

如何从Eclipse部署Scala项目?
EN

Stack Overflow用户
提问于 2010-05-27 21:39:50
回答 5查看 5K关注 0票数 11

我在Eclipse中有一个Scala项目,我需要将其打包,以便将其部署到服务器上。它基于Jetty,但它作为一个独立的应用程序运行。它包含Scala类、Java类和许多第三方jars。

我以为Scala Eclipse插件中会有某种部署选项,但我没有想到。

将Scala项目打包成可运行文件以便部署的最简单方法是什么?

非常感谢您的帮助。干杯。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-29 10:39:50

经过大量的试验和错误,这是我找到的打包Scala应用程序以供分发的最佳方法:

首先,创建一个Java类作为应用程序的主要入口点,如Gary Boon所述。这允许您使用java命令从JAR运行应用程序。我发现使用java命令运行Scala类是有问题的,即使在源路径上有Scala库:

代码语言:javascript
运行
复制
import java.util.ArrayList;

import scala.tools.nsc.MainGenericRunner;


public class Main { 
    public static void main (String[] args) {
        ArrayList<String> argList = new ArrayList<String>();
        argList.add("fully.qualified.ClassName");
        for (String s : args) {
            argList.add(s);
        }
        MainGenericRunner.main(argList.toArray(new String[0]));
    }
}

现在,您可以使用Eclipse的Export Runnable JAR命令将所有类和库打包到一个JAR文件中。将JAR的主类设置为Java入口点。您还可以将Eclipse生成的输出设置保存为ANT构建文件,以便进行调整。使用ANT创建带有Java入口点的JAR会产生最佳结果。您还可以通过这种方式打包其他JAR依赖项,这使得在不同主机上运行JAR时变得非常简单。您至少需要Scala库和Scala工具JAR。

代码语言:javascript
运行
复制
<zipfileset excludes="META-INF/*.SF" src="${scala.lib.jar}"/>
<zipfileset excludes="META-INF/*.SF" src="${scala.tools.jar}"/>

如果您像我一样使用嵌入式Jetty,则可以使用以下命令(source)将服务器作为守护进程运行:

代码语言:javascript
运行
复制
nohup java -jar MyJettyServer.jar < /dev/null >> server.log 2>> server_error.log &

这将程序作为独立于当前用户会话的后台进程运行,因此该进程将在您注销主机后继续运行。

票数 5
EN

Stack Overflow用户

发布于 2010-05-27 22:00:55

Sbt supports web application deployments。当然,您可以使用Ant、Maven或其他构建工具来打包WAR以进行Jetty部署。您可以从eclipse中将sbt作为外部工具启动。

Sbt似乎支持JRebel配置。一旦它运行,您应该能够在eclipse中更改资源和类,而无需额外的war部署步骤。

票数 5
EN

Stack Overflow用户

发布于 2010-05-27 23:00:51

我正在做完全相同的事情:开发在嵌入Jetty的普通应用程序中运行的服务器端代码。现在大部分都是Scala代码,以前是Java。无论采用哪种方式,我都只是从一个或多个JAR文件运行Java代码。

在这两种情况下,我都使用Ant进行部署构建。我的Scala项目有时会使用现有的Java类。为此,我添加了一个Ant目标,它将Java类编译到一个JAR中,随后将在我的Eclipse Scala插件和Ant deploy构建目标中使用该JAR。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2921600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档