gpt4 book ai didi

scala - SBT Publish local 不包含依赖

转载 作者:行者123 更新时间:2023-12-04 17:16:29 27 4
gpt4 key购买 nike

我有多个项目 A、B、C。有些是实用程序库,有些是应用程序。

如果我有依赖层次 A->B->C 并使用发布本地,我必须在 A 中包含依赖 B 和 C。即使 A 不直接从 C 使用任何东西(仅通过代理)。就好像所有项目 B 依赖项都添加了提供的范围。

为什么这些依赖项不会被解析并添加到类路径中?

这不是一个多项目 Build.scala(故意)我有几个简化的构建文件,我希望它们是自包含的构建。

启动应用程序 A 时,我正在使用命令 re-start (Revolver)。

/马格努斯

示例配置
在这个例子中,我不得不包含多个库(充气城堡),这些库只在以下库之一中真正使用(全部用发布本地发布)

"mollyware"         %% "fulla-utils"    % fulla,
"mollyware" %% "brage-http" % brage,
"mollyware" %% "saga-domain" % saga,

连接的 build.sbt 文件
scalaVersion := "2.10.3"

name := "mimer-idp"

organization := "mollyware"

version := "0.0.1"

import scalariform.formatter.preferences._

net.virtualvoid.sbt.graph.Plugin.graphSettings

// compile options
scalacOptions ++= Seq(
"-encoding",
"UTF-8",
"-optimise",
"-deprecation",
"-unchecked",
"-feature",
"-Yinline-warnings"
)

javacOptions ++= Seq(
"-Xlint:unchecked",
"-Xlint:deprecation"
)

resolvers += Classpaths.typesafeReleases

resolvers ++= Seq(
"Spray repo" at "http://repo.spray.io",
"Spray nightlies" at "http://nightlies.spray.io",
"Sonatype Snapshot Repo" at "http://oss.sonatype.org/content/repositories/snapshots/"
)

scalariformSettings

ScalariformKeys.preferences := FormattingPreferences()
.setPreference( RewriteArrowSymbols, true )
.setPreference( AlignParameters, true )
.setPreference( AlignSingleLineCaseStatements, true )
.setPreference( SpaceInsideParentheses, true )
.setPreference( DoubleIndentClassDeclaration, true )
.setPreference( PreserveDanglingCloseParenthesis, true )

libraryDependencies <<= scalaVersion { scala_version =>
val akka = "2.2.1"
val ampq = "1.3-SNAPSHOT"
val spray = "1.2.0"
val sprayJson = "1.2.5"
val fulla = "0.0.1"
val brage = "0.0.1"
val saga = "0.0.1"
val scalaTest = "2.0.RC2"
val commons = "1.7"
val bcastle = "1.49"
Seq(
"io.spray" % "spray-routing" % spray,
"io.spray" % "spray-can" % spray,
"io.spray" % "spray-http" % spray,
"io.spray" % "spray-client" % spray,
"io.spray" % "spray-testkit" % spray % "test",
"io.spray" %% "spray-json" % sprayJson,
"com.typesafe.akka" %% "akka-actor" % akka,
"com.typesafe.akka" %% "akka-remote" % akka,
"com.github.sstone" %% "amqp-client" % ampq,
"mollyware" %% "fulla-utils" % fulla,
"mollyware" %% "brage-http" % brage,
"mollyware" %% "saga-domain" % saga,
"commons-codec" % "commons-codec" % commons,
"org.scalatest" % "scalatest_2.10" % scalaTest % "test",
"org.bouncycastle" % "bcprov-jdk15on" % bcastle,
"org.bouncycastle" % "bcpkix-jdk15on" % bcastle
)
}

import sbtassembly.Plugin._

import AssemblyKeys._

import spray.revolver.RevolverPlugin._

assemblySettings

assembleArtifact in packageScala := false

assembleArtifact in packageDependency := true

assemblyOption in packageDependency ~= { _.copy(includeScala = false) }

Revolver.settings

最佳答案

所以这就是问题所在:在某些时候我决定删除 -SNAPSHOT从我设置 CI 服务器时的构建版本开始。

这反过来似乎意味着该发布本地不会更新具有相同版本的包。

这花了我一段时间才弄明白,因为我不久前进行了更改。奇怪的是,代码似乎仍然在更新,因为我发现 class not found 异常。 jar 是否有可能被覆盖而不是 Ivy 或绒球?

我得到了很好的帮助 sbt-dependency-graph plugin最后想办法解决这个问题。未列出依赖项。当我修改版本或更改为快照时,它又开始工作了。

关于scala - SBT Publish local 不包含依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20405024/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com