Как развернуть проект Scala от Eclipse?

У меня есть проект Scala в Eclipse, который я должен упаковать, таким образом, я могу развернуть его на сервере. Это основано на Причале, но это работает как автономное приложение. Это содержит классы Scala, классы Java и много сторонних банок.

Я предположил, что будет некоторый вариант развертывания в плагине Eclipse Scala, но я терпел неудачу.

Что самый простой путь состоит в том, чтобы упаковать проект Scala в выполнимый файл, таким образом, он может быть развернут?

Любая справка значительно ценится.Удачи.

11
задан lach 27 May 2010 в 13:39
поделиться

4 ответа

После множества проб и ошибок это лучший метод, который я нашел для упаковки приложения Scala для распространения:

Сначала создайте класс Java, который будет основной точкой входа для приложения, как описано в Гэри Бун . Это позволяет запускать приложение из JAR с помощью команды java. Я обнаружил, что запуск класса Scala с командой java проблематичен, даже если у вас есть библиотеки Scala на исходном пути:

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 для создания JAR с точкой входа Java дало наилучшие результаты. Вы также можете упаковать другие зависимости JAR таким образом, что значительно упрощает запуск JAR на другом хосте. Как минимум вам потребуются библиотека Scala и JAR инструментов Scala.

<zipfileset excludes="META-INF/*.SF" src="${scala.lib.jar}"/>
<zipfileset excludes="META-INF/*.SF" src="${scala.tools.jar}"/>

Если вы, как и я, используете встроенную Jetty, вы можете запустить сервер как процесс демона, используя следующую команду ( source ):

nohup java -jar MyJettyServer.jar < /dev/null >> server.log 2>> server_error.log &

Программа запускается как фоновый процесс, который не зависит от текущего сеанса пользователя, поэтому процесс продолжится после выхода из системы.

5
ответ дан 3 December 2019 в 08:28
поделиться

Вы используете способность eclipses для создания файла WAR, как и в случае с Java. Или файл jar, как и для Java. Поскольку во время выполнения это java. Больше никакой магии не нужно.

0
ответ дан 3 December 2019 в 08:28
поделиться

Я делаю то же самое: разрабатываю код на стороне сервера, который выполняется внутри простого приложения, в которое встроена Jetty. В настоящее время это в основном код Scala, раньше это была Java. В любом случае я просто запускаю код Java из одного или нескольких файлов JAR.

В обоих случаях я использую Ant для развертывания сборок. Мои проекты Scala иногда используют существующие классы Java. Для этого я добавляю цель Ant, которая компилирует классы Java в JAR, который впоследствии используется как в моем подключаемом модуле Eclipse Scala, так и в целях сборки развертывания Ant.

2
ответ дан 3 December 2019 в 08:28
поделиться

Sbt поддерживает развертывание веб-приложений . Конечно, вы можете использовать Ant, Maven или другие инструменты сборки для упаковки WAR для развертывания Jetty. Вы можете запустить sbt как внешний инструмент из eclipse.

Кажется, Sbt поддерживает конфигурацию JRebel . После его запуска вы сможете изменять ресурсы и классы из eclipse без дополнительного этапа развертывания войны.

5
ответ дан 3 December 2019 в 08:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: