У нас возникли проблемы с добавлением тестового артефакта из одного стороннего проекта в Ivy test
conf другого проекта.Зависит от тестового артефакта другого проекта в Ivy (in sbt)
Мы не можем выразить следующую зависимость: myprj-common/test -> framework-app-base/test
с использованием Ivy (в сборке sbt).
Проект framework-app-base
имеет src/main/scala
, который генерирует jars/framework-app-base-0.0.123-SNAPSHOT.jar
в Ivy репо и src/test/scala
, который генерирует tests/framework-app-base-0.0.123-SNAPSHOT-test.jar
Например, есть утилита класса /framework-app-base/src/test/scala/com/myco/fmwk/framework/base/test/util/TestUtility.scala
, который заканчивается в ${user.home}/.ivy2/repo/com.myco.fmwk.framework/framework-app-base/tests/framework-app-base-0.0.123-SNAPSHOT-test.jar
.
Наш код от myprj-common/src/test/scala
использует класс TestUtility
, и это отлично работает в среде IDE.
Когда мы пытаемся запустить сборку sbt (sbt clean update compile test
), компиляция работает нормально, но тесты не работают, потому что TestUtility
не найден.
Когда мы show test:dependency-classpath
в СБТ, мы видим, что главный артефакт находится в пути к классам, но тест артефакт не является:
jars/framework-app-base-0.0.123-SNAPSHOT.jar
находится в пути к классам
tests/framework-app-base-0.0.123-SNAPSHOT-test.jar
не в пути к классам
Мы попытались указать зависимость, как показано ниже, но она не имеет значения:
<dependency org="com.myco.fmwk.framework" name="framework-app-base" rev="0.0.+" force="true" conf="compile->compile(*),master(*);runtime->runtime(*)" />
<dependency org="com.myco.fmwk.framework" name="framework-app-base" rev="0.0.+" m:classifier="test" conf="test->test(*)" />
Как мы можем выразить эту зависимость?
проекты myprj-common
и framework-app-base
не внутри той же мульти-проекта, поэтому myprj-common
может зависеть только от кувшинов, генерируемых framework-app-base
. Другими словами, невозможно добавить .dependsOn()
в build.sbt
(AFAIK).