2017-02-07 10 views
0

У нас возникли проблемы с добавлением тестового артефакта из одного стороннего проекта в 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).

ответ

0

Мы закончили преобразование наших спецификаций зависимостей в синтаксис sbt, внутри build.sbt. Для того, чтобы выразить зависимость от испытываемого артефакта, мы используем

"com.myco.fmwk.framework" % "framework-app-base" % "0.0.+" % "compile->test;test->test" classifier "" classifier "test"

, что означает, что мы добавим к классам framework-app-base-0.0.123-SNAPSHOT И framework-app-base-0.0.123-SNAPSHOT-test.jar.jar соответственно.

Возможно, это может быть сделано аналогичным образом с использованием файлов Ivy, но мы хотели, чтобы вся наша спецификация сборки была выражена в одном формате.

 Смежные вопросы

  • Нет связанных вопросов^_^