Создайте JAR-файл только с помощью тестов Гатлинга - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь собрать файл jar с помощью Gatling тестов, которые в конечном итоге мне нужно пройти к Taurus , но мне кажется, что мой jar толстый, и он конфликтует с внутренними библиотеками в Телец.

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

Я играл с sbt assembly, но мне кажется, что он упаковывает «слишком много» в файл jar, и я не могу понять, как его ограничить, чтобы избежать таких зависимостей, как сам сбор данных.

Моя общая структура проекта похожа на это репо. У меня нет папки main в репозитории (она мне нужна?)

Может ли sbt native packager помочь мне здесь?

UPDATE

Здесь - репозиторий, который я использую для тестирования сборки

Тестовые файлы, которые я хочу включить, находятся в src/it

My build.sbt (не уверен, все ли имеет смысл в этом контексте)

enablePlugins(GatlingPlugin)
enablePlugins(AssemblyPlugin)

scalaVersion := "2.12.8"
// This forbids including Scala related libraries into the dependency
autoScalaLibrary := false

// dependencies for Gatling
libraryDependencies += "io.gatling.highcharts" % "gatling-charts-highcharts" % "3.0.2" % Provided
libraryDependencies += "io.gatling"            % "gatling-test-framework"    % "3.0.2" % Provided

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)

// make '~' work (again :))
watchSources += baseDirectory.value / "src" / "it"

// configure the assembly
fullClasspath in assembly := (fullClasspath in GatlingIt).value
mainClass in assembly := Some("io.gatling.app.Gatling")
assemblyMergeStrategy in assembly := {
  case path if path.endsWith("io.netty.versions.properties") => MergeStrategy.first
  case path => {
    val currentStrategy = (assemblyMergeStrategy in assembly).value
    currentStrategy(path)
  }
}
test in assembly := {}

В результате, когда я делаю sbt assembly, я все еще вижу много библиотек, в том числе и Гатлинга.

1 Ответ

0 голосов
/ 16 января 2019

Да, вы правы. Плагин сборки, кажется, упаковывает много.

Вы можете сделать следующее:

  1. исключить библиотеку scala, если в вашей среде исполнения уже установлены. Вы можете сделать это, добавив следующий код в build.sbt
assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)
  1. Установите зависимость, которая уже установлена ​​в вашей среде выполнения, как указано. Например
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.1" % Provided
...