Тестирование/компиляция не находит lib/jar с помощью Scala 3 (но 2.13 работает)

Я упаковываю банки из сгенерированного исходного кода с помощью sbt-плагина, и банки в порядке и находятся в пути к классам.

Теперь у меня есть два одинаковых минимальных проекта, ориентированных на Scala 2.13 и 3.3. С 2.13 я могу запустить sbt clean Test/compile, но с 3.3 выдает такую ​​ошибку:

Could not find null in Some(.../test-project-3/lib/molecule-test-project-3.jar)
-- [E006] Not Found Error: .../test-project-3/src/test/scala/app/Connection.scala:14:23 
14 |  val schema: Schema = PersonSchema
   |                       ^^^^^^^^^^^^
   |                       Not found: PersonSchema

Я clean хочу убедиться, что тестовый код получает код только из сгенерированных jar-файлов (что отлично работает с версией 2.13).

Тогда я подумал, что это может быть связано с какими-то двоичными проблемами, и поэтому попробовал запустить JDK версий 8, 11 и 20, но это не имело значения.

Следующие команды компилируют два проекта (и последний завершается с ошибкой):

git clone https://github.com/scalamolecule/sbt-molecule.git
cd sbt-molecule/test-project-2
sbt clean compile -Dmolecule=true
sbt clean Test/compile
cd ../test-project-3
sbt clean compile -Dmolecule=true
sbt clean Test/compile

(флаг -Dmolecule=true заставляет плагин генерировать jar-файлы)

Благодарен за любые идеи о том, о чем это может быть!

Файл сборки для версии 3.3:

name := "sbt-molecule-test-project"
version := "1.8.1-SNAPSHOT"
organization := "org.scalamolecule"
scalaVersion := "3.3.3"
libraryDependencies ++= Seq(
  "com.lihaoyi" %% "utest" % "0.8.3",
  "org.scalamolecule" %% "molecule-sql-h2" % "0.9.0",
)
testFrameworks += new TestFramework("utest.runner.Framework")
Test / parallelExecution := false

// Molecule
enablePlugins(MoleculePlugin)

// Generate Molecule boilerplate code with `sbt clean compile -Dmolecule=true`
moleculePluginActive := sys.props.get("molecule").contains("true")

// tells plugin where to look for definitions of code to be generated
moleculeDataModelPaths := Seq("app") 

// Doesn't make a difference
//Test / fork := true

Не могли бы вы поделиться соответствующей частью файла build.sbt?

Gaël J 06.07.2024 18:37

Конечно, хотя показывать особо нечего..

Marc Grue 06.07.2024 18:49

Является ли Connection.scala сгенерированным файлом? Где должен быть определен PersonSchema? Вы открывали файл JAR, чтобы посмотреть, что в нем?

Gaël J 07.07.2024 08:48
Connection — это тестовый файл, PersonSchema генерируется и присутствует в банке. Таким образом, банка и сам процесс генерации кажутся в порядке. Проблема возникает, когда сгенерированные исходные файлы очищаются и sbt компилирует тестовый код, а затем не находит (или не может использовать) jar.
Marc Grue 07.07.2024 11:49
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сгенерированный jar-файл для файлов классов не содержит новых .tasty файлов Scala 3.

Я отфильтровал файлы классов для включения в jar по расширению имени файла «.class» и пропустил добавление «.tasty» для Scala 3. После добавления все работает как часы.

Поэтому я пропустил тот факт, что банки на самом деле были не в порядке.

Другие вопросы по теме