Выполнить задачу sbt без предварительной компиляции (для генерации классов базы данных с JOOQ) - PullRequest
1 голос
/ 02 октября 2019

У меня есть приложение PlayFramework 2.7, созданное sbt.

Для доступа к базе данных я использую JOOQ. Как вы знаете, JOOQ читает мою схему базы данных и генерирует исходные классы Java, которые затем используются в моем приложении.

Приложение компилируется только при наличии классов базы данных.

Ягенерация классов с помощью этой пользовательской задачи sbt:

// https://mvnrepository.com/artifact/org.jooq/jooq-meta
libraryDependencies += "org.jooq" % "jooq-meta" % "3.12.1"

lazy val generateJOOQ = taskKey[Seq[File]]("Generate JooQ classes")
generateJOOQ := {
  (runner in Compile).value.run("org.jooq.codegen.GenerationTool",
  (fullClasspath in Compile).value.files,    
  Array("conf/db.conf.xml"),
  streams.value.log).failed foreach (sys error _.getMessage)
  ((sourceManaged.value / "main/generated") ** "*.java").get
}

Я гуглил, нашел скрипт выше и немного изменил его в соответствии со своими потребностями, но я не совсем понимаю его, так как sbt / scalaНовое для меня.

Проблема теперь в том, что когда я запускаю generateJOOQ, sbt пытается сначала скомпилировать проект, что не удается, поскольку в классах базы данных отсутствуют . Поэтому мне нужно закомментировать весь код, использующий сгенерированные классы, выполнить задачу, которая компилирует мой проект, сгенерировать классы базы данных, а затем снова включить закомментированный код. Это боль!

Полагаю, проблема в команде (runner in Compile), но я не нашел возможности выполнить свое пользовательское задание БЕЗ компиляции первым.

ПожалуйстаПомогите! Спасибо!

...