Я запустил sbt clean compile и вижу jar в своем локальном каталоге ivy2.
Это странно. sbt clean compile
не публикует артефакт в локальном хранилище. (Вы скопировали это вручную там?) Это должно было быть сделано с помощью команды publishLocal
, и артефакт должен был стать доступным в {path_to_.ivy2}/local/MyCorp/MyProject/0.1/jars/MyProject.jar
.
Теперь в вашем втором проекте его можно добавить как
libraryDependencies += "MyCorp" % "MyProject" % "0.1"
// or in libraryDependencies ++= Seq(...)
Обратите внимание, что суффикс _2.11
, который вы использовали в названии, зависит от того, как был построен первый проект, отличалась ли его сборка версиями Scala. Если бы это было так, суффикс обычно присутствовал бы в имени файла артефакта .jar. И предпочтительно избегать включения суффикса в объявление зависимостей библиотеки, но вместо этого используйте %%
для встроенной поддержки.
После проверки также попытайтесь перезапустить интерфейс командной строки SBT, потому что, к сожалению, иногда изменения в build.sbt
не учитываются на лету.
Обновление
Я предполагаю, что это mycorp.myproject.test, но я перепробовал все возможные комбинации. @ Brian
После комментариев я думаю, что в проекте все еще должно быть что-то неправильно настроенное и / или отсутствующее в описании.
Предполагается, что существует файл {path/to/project}/src/main/scala/mycorp/myproject/Test.scala
со следующим содержимым:
package mycorp.myproject
object Test {
def info(message: String): Unit = println(s"INFO: $message")
}
Когда артефакт публикуется, файл .jar должен содержать папки mycorp/myproject
с файлами Test.class
и Test$.class
.
После добавления .jar к зависимостям второго проекта импорт Test
в другой класс должен выглядеть следующим образом:
package mycorp.myproject2
import mycorp.myproject.Test
object AnotherTest extends App {
Test.info("hello")
}
Надеюсь, это поможет.
Заключительная обновление