【问题标题】:AspectJ weaving external jar file provided by sbt throws can't determine superclass of missing typesbt throws 提供的 AspectJ 编织外部 jar 文件无法确定缺少类型的超类
【发布时间】:2019-08-12 10:15:13
【问题描述】:

我正在尝试编织测试库 scalatest (https://mvnrepository.com/artifact/org.scalatest/scalatest_2.12/3.2.0-SNAP10)。这个库依赖在我的 build.sbt 中:

enablePlugins(SbtAspectj)
libraryDependencies += "org.scalactic" %% "scalactic" % "3.0.5"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"

aspectjInputs in Aspectj ++= update.value.matching(moduleFilter(organization = "com.typesafe.akka", name = "akka-actor*"))
aspectjInputs in Aspectj ++= update.value.matching(moduleFilter(organization = "org.scalatest", name = "scalatest*")) 

fullClasspath in Runtime := aspectjUseInstrumentedClasses(Runtime).value ++ aspectjUseInstrumentedClasses(Test).value

查看 maven 网站,它列出了其他几个可选依赖项,例如 org.jmock 等。

问题在于 SBT 只下载 scalatest.jar 而不是 jmock.jar(以及其他可选依赖项)。打印出aspectjInputs 确实显示了scalatest.jar,但没有 jmock.jar。

由于这个原因(?),它给了我以下错误:

[error] error at (no source information available)
[error] /Users/jonas/.ivy2/cache/org.scalatest/scalatest_2.12/bundles/scalatest_2.12-3.0.5.jar:0::0 can't determine superclass of missing type org.jmock.Expectations
[error] when weaving type org.scalatest.jmock.JMockExpectations
[error] when weaving classes 
[error] when weaving 
[error] when batch building BuildConfig[null] #Files=1 AopXmls=#0
[error]  [Xlint:cantFindType]

我假设我需要 ScalaTest 的可选依赖项的 .jar 文件,但由于 sbt 没有下载它们,我不知道如何解决这个问题。

那么,当编织发生时,我该如何解决它们或将它们添加到类路径中?

我正在使用 aspectj-sbt 插件。

【问题讨论】:

    标签: sbt aspectj


    【解决方案1】:

    您可以使用如下配置映射包含可选依赖项:

    libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test->compile,optional"
    

    【讨论】:

    • 这确实下载了可选的依赖项,但是编织仍然失败并出现类似的错误..
    • 我在一个新项目上尝试过,现在似乎可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    相关资源
    最近更新 更多