Создать целевой каталог вне каталога проекта с помощью sbt - PullRequest
0 голосов
/ 30 мая 2020

Структура моего проекта:

└───current-working-dir
    ├───my-project
        ├───src

Когда я запускаю sbt compile в current-working-dir, где файл .sbt выглядит так:

lazy val root = (project in file("my-project"))
  .settings(
    name := "my-project",
    settings,
    libraryDependencies ++= commonDependencies
  )

, он генерирует target в каталоге проекта:

└───current-working-dir
    ├───my-project
        ├───src
        ├───target

Можно ли заставить sbt создавать цель вне каталога проекта? Например:

└───current-working-dir
    ├───my-project
        ├───src
    ├───target

или

└───current-working-dir
    ├───my-project
        ├───src
    ├───my-project-compilation
        ├───target

Ответы [ 2 ]

1 голос
/ 30 мая 2020

На самом деле, я думаю, что правильным является

lazy val root = (project in file("my-project"))
  .settings(
    name := "my-project",
    settings,
    libraryDependencies ++= commonDependencies,
    target := baseDirectory.value / ".." / "my-project-compilation" / "target"
  )

Вы можете проверить, что если вы поместите файл как current-working-dir/my-project/src/main/scala/App.scala, то скомпилированный класс будет отображаться как current-working-dir/my-project-compilation/target/scala-2.13/classes/App.class.

1 голос
/ 30 мая 2020

target настройка контролирует, где создаются файлы. Вот пример, как его изменить

target := baseDirectory.value / "my-project-compilation" / "target"
...