Sbt родной упаковщик не находит SystemdPlugin

scala sbt sbt-native-packager

945 просмотра

2 ответа

2728 Репутация автора

Я пытаюсь получить rpm, использующий архетип Systemd. Тем не менее, я получаю ошибки при импорте в build.sbt. Я использую SBT версии 0.13.11 В частности, я вижу:

build.sbt:3: error: object systemloader is not a member of package com.typesafe.sbt.packager.archetypes

Я пытаюсь использовать версию 1.1.4 sbt-native-packager. Вот мои plugins.sbt:

// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// The Sonatype snapshots repository
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.4")

Мой build.sbt:

import com.typesafe.sbt.packager.linux.LinuxSymlink
import com.typesafe.sbt.packager.rpm.RpmPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.systemloader._

scalaVersion := "2.11.7"

name := "systemdtest"

organization := "myTestOrg"

enablePlugins(JavaServerAppPackaging, RpmPlugin, SystemdPlugin)

version := "1.0"

// RPM SETTINGS
rpmVendor := "me"

packageSummary in Linux := "A summary"

packageDescription := "Do some stuff"

rpmRelease := "1"

rpmBrpJavaRepackJars := false

rpmLicense := Some("Copyright this project")

rpmGroup := Some("mygroup")

rpmPrefix := Some("/opt/mypath")

Я получаю сообщение об ошибке при попытке запустить

sbt stage

или же

sbt rpm:packageBin
Автор: dmcnelis Источник Размещён: 18.07.2016 12:43

Ответы (2)


5 плюса

2728 Репутация автора

Решение

Документация для 1.1 на нативном сайте упаковщика ( http://www.scala-sbt.org/sbt-native-packager/archetypes/systemloaders.html ) говорит об использовании автоматического плагина под названием SystemdPlugin.

Тем не менее, это не существует в ветке 1.1, и было введено в ветке 1.2, то есть (на момент публикации, это 1.2.0M3), и еще не GA.

Правильным соглашением является добавление в ваш build.sbt назначения под названием «serverLoading».

В моем случае, чтобы использовать RPM, мне нужно было изменить свой build.sbt следующим образом:

import com.typesafe.sbt.packager.rpm.RpmPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.ServerLoader

scalaVersion := "2.11.7"

name := "systemdtest"

organization := "myTestOrg"

enablePlugins(JavaServerAppPackaging)

version := "1.0"

// RPM SETTINGS
rpmVendor := "me"

packageSummary in Linux := "A summary"

packageDescription := "Do some stuff"

rpmRelease := "1"

rpmBrpJavaRepackJars := false

rpmLicense := Some("Copyright this project")

rpmGroup := Some("mygroup")

rpmPrefix := Some("/opt/mypath")

//THIS IS THE KEY PIECE!!
serverLoading in Rpm := ServerLoader.Systemd

Я нашел свое решение, читая комментарии к этой проблеме. https://github.com/sbt/sbt-native-packager/pull/785

Автор: dmcnelis Размещён: 20.07.2016 01:01

4 плюса

904209 Репутация автора

sbt native-packager 1.2.0 почти выпущен (ноябрь 2016 г.), и Muki Seiler рассказывает об этой новой функции, появившейся в PR 785 :

Systemloadersявляются в AutoPluginsнастоящее время

Ранее архетип приложения на сервере Java предоставлял настройку, в serverLoadingкоторой вы можете определить системный загрузчик, например:

import com.typesafe.sbt.packager.archetypes.ServerLoader

serverLoading in Rpm := ServerLoader.Upstart

Это добавляет необходимые конфигурационные файлы и сценарии для сопровождения ( postinst, postunи т.д.) для того , чтобы зарегистрировать и запустить приложение.

Самая большая проблема с тесной связью между архетипом сервера и тем systemloaders, что трудно добавить systemloaderопределенные настройки, не сильно меняя архетип сервера.
Также гораздо сложнее рассуждать о коде и выводе.

С дополнительными плагинами systemloader мы открываем возможность

  • легко расширить один системный загрузчик
  • есть место для размещения общих systemloaderфункций (есть место, SystemLoaderPluginкоторое заботится об общих настройках)
  • тестовые системные загрузчики в изоляции
  • лучший опыт разработчика

Вы включаете systemloader, включив конкретный systemloaderплагин

enablePlugins(SystemdPlugin)
Автор: VonC Размещён: 12.11.2016 09:34
Вопросы из категории :
32x32