Для моих существующих проектов я переношусь из scalaVersion 2.10.5 в 2.11.7 и sbtVersion 1.13.9.Как работают зависимости в Scala?
Текущий проект мигрирующего является продажами, он имеет Sales-общий, в продаже читаемого Sales-писать модулей. Он имеет один зависимый проект Core. Но у меня нет кода проекта Core. Я только что опубликовал артефактные баночки (у меня есть myapp-core-read_2.10-2.2.33.jar, 2.10 - версия Scala).
Мой проект выглядит следующим образом
продаж
common build.sbt read build.sbt write build.sbt build.sbt
До сих пор, с 2.10.5 все Scala работает нормально, используя в режиме реального времени также.
После изменения версии я запускаю sbt clean
и sbt update
. Я получаю вопрос неразрешенных зависимостей, как это:
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: UNRESOLVED DEPENDENCIES ::
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
[warn] :: mycompany#myapp-core-read_2.11;2.2.33: not found
[warn] :: mycomapny#myapp-core-write_2.11;2.2.33: not found
[warn] ::::::::::::::::::::::::::::::::::::::::::::::
Мои Продажи buld.sbt это:
name := "myapp-sales"
organization in ThisBuild := "com.mycompany"
scalaVersion in ThisBuild := "2.11.7"
//crossScalaVersions in Thisq
//Build := List("2.10.5", scalaVersion.value)
//crossPaths := false
scalacOptions in Compile in ThisBuild ++= Seq("-unchecked", "-deprecation", "-encoding", "utf8", "-language:postfixOps", "-language:implicitConVersions")
lazy val common = Project("myapp-sales-common", file("common"))
lazy val read = Project("myapp-sales-read", file("read")).configs(IntegrationTest).settings(Defaults.itSettings: _*).dependsOn(common, write)
lazy val write = Project("myapp-sales-write", file("write")).configs(IntegrationTest).settings(Defaults.itSettings: _*).dependsOn(common)
conflictWarning in ThisBuild := ConflictWarning.disable
parallelExecution in Test in ThisBuild := false
parallelExecution in IntegrationTest in ThisBuild := false
javacOptions in Compile in ThisBuild ++= Seq("-source", "1.6", "-target", "1.6")
//Remove SNAPSHOT check from the release process (for now until Squants gets a release)
releaseProcess := releaseProcess.value.filterNot(_ == ReleaseTransformations.checkSnapshotDependencies)
Мои чтения модуль build.sbt:
libraryDependencies ++= Seq(
"com.mycompany" %% "myapp-core-read" % myappsales.CoreVersion % "compile", // disable using the Scala version in output paths and artifacts,
"com.mycompany" %% "myapp-core-write" % myappsales.CoreVersion % "compile",
"com.mycompany" %% "myapp-registration-common" % myappsales.RegistrationVersion % "compile",
"com.mycompany" %% "myapp-load-common" % myappsales.LoadVersion % "compile",
"com.mycompany" %% "myapp-core-write-test" % myappsales.CoreVersion % "it, test",
"com.mycompany" %% "myapp-core-test" % myappsales.CoreVersion % "it, test"
)
libraryDependencies ++= Seq(
"com.typesafe" % "config" % myappsales.TypeSafeConfigVersion % "compile",
"org.json4s" %% "json4s-native" % Versions.Json4s % "compile",
"io.spray" % "spray-routing" % Versions.Spray % "compile",
"com.typesafe.akka" %% "akka-actor" % Versions.Akka % "compile",
"com.typesafe.akka" %% "akka-remote" % Versions.Akka % "compile"
exclude ("io.netty", "netty")
)
//Assemby settings
test in assembly := {}
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("play.api.libs.iteratee.**" -> "[email protected]")
.inLibrary("play" % "play-iteratees_2.10" % "2.1-RC2")
.inLibrary("org.reactivemongo" % "reactivemongo_2.10" % "0.8.1-SNAPSHOT"),
ShadeRule.rename("scala.concurrent.stm.**" -> "[email protected]")
.inLibrary("org.scala-stm" % "scala-stm_2.10.0" % "0.6")
.inLibrary("play" % "play-iteratees_2.10" % "2.1-RC2")
)
assemblyMergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
case path => MergeStrategy.defaultMergeStrategy(path)
}
//Make assembly a publishable artifact
artifact in (
Compile, assembly) := {
val art = (artifact in (Compile, assembly)).value
art.copy(`classifier` = Some("assembly"))
}
addArtifact(artifact in (Compile, assembly), assembly)
Как я могу заставить его работать с существующим myapp-core-read_2.10-2.2.33.jar j соток?
WOW, отличная информация, почти решена моя проблема. спасибо ** Денис Роска **. – Sun
Я удалил один '%', но он не ищет ** «myapp-core-read_2.10»% myappsales.CoreVersion **. он ищет ** «myapp-core-read»% myappsales.CoreVersion **. Не могли бы вы помочь мне использовать существующие банки в локальном репозитории. – Sun
@Ravi Если вы удалите один '%', вам нужно добавить суффикс самостоятельно. Поэтому в декларации зависимостей вам нужно изменить «myapp-core-read» на «myapp-core-read_2.10». В любом случае, как я уже сказал в ответ, вам, скорее всего, придется перекомпилировать myapp-core-read с помощью 2.11. –