У меня есть приложение 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)
, но я не нашел возможности выполнить свое пользовательское задание БЕЗ компиляции первым.
ПожалуйстаПомогите! Спасибо!