带本机打包器的sbt aspectj

带本机打包器的sbt aspectj,sbt,aspectj,sbt-native-packager,sbt-aspectj,Sbt,Aspectj,Sbt Native Packager,Sbt Aspectj,我试图将sbt aspectj插件与sbt原生打包机一起使用,但遇到了一个问题,即aspectj加载时weaver jar的相关-javaagent路径引用了一个常春藤缓存位置,而不是打包的内容 也就是说,在运行sbt stage之后,通过bash-x target/universal/stage/bin/myapp/执行stage应用程序将产生以下javaagent: exec java-javaagent:/home/myuser/.ivy2/cache/org.aspectj/aspect

我试图将sbt aspectj插件与sbt原生打包机一起使用,但遇到了一个问题,即aspectj加载时weaver jar的相关
-javaagent
路径引用了一个常春藤缓存位置,而不是打包的内容

也就是说,在运行
sbt stage
之后,通过
bash-x target/universal/stage/bin/myapp/
执行stage应用程序将产生以下javaagent:

exec java-javaagent:/home/myuser/.ivy2/cache/org.aspectj/aspectjweaver/jars/aspectjweaver-1.8.10.jar-cp/home/myuser/myproject/target/universal/stage/lib/org.aspectj.aspectjweaver-1.8.10.jar:/home/myuser/myproject/target/universal/stage/lib/otherlibs.jar MyMainApp args

我的目标平台是Heroku,在Heroku中,工件在被有效地“推”到单独的“dyno”(非常类似于docker设置)之前被构建。这里的问题是,生成的-javaagent路径在构建“staged”可部署程序的机器上是有效的,但在最终运行它的地方将不存在

如何配置sbt aspectj插件以引用打包的库而不是来自ivy缓存的库


当前配置:

project/plugins.sbt:

addSbtPlugin("com.typesafe.sbt" % "sbt-aspectj" % "0.10.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.5")
build.sbt(选定零件):


更新

我尝试了几种方法,包括从现有映射中提取javaOptions的相关输出,但结果是sbt抛出周期性依赖错误

我有一些东西从技术上解决了我的问题,但感觉不满意。到目前为止,我直接包含一个aspectjweaver依赖项,并使用sbt原生打包程序概念
bashScriptExtraDefines
附加一个适当的javaagent:

更新的build.sbt:

import com.typesafe.sbt.SbtAspectj._
lazy val root = (project in file(".")).settings(
  aspectjSettings,
  bashScriptExtraDefines += scriptClasspath.value
    .filter(_.contains("aspectjweaver"))
    .headOption
    .map("addJava -javaagent:${lib_dir}/" + _)
    .getOrElse(""),
  fork in run := true
)

您可以在sbt配置中添加以下设置:

.settings(
  retrieveManaged := true,
  libraryDependencies += "org.aspectj" % "aspectjweaver" % aspectJWeaverV)

AspectJ weaver JAR将复制到项目根目录中的
/lib\u managed/jars/org.AspectJ/aspectjweaver/aspectjweaver-[aspectJWeaverV].JAR

您可以在sbt配置中添加以下设置:

.settings(
  retrieveManaged := true,
  libraryDependencies += "org.aspectj" % "aspectjweaver" % aspectJWeaverV)

AspectJ weaver JAR将被复制到
/lib\u managed/jars/org.AspectJ/aspectjweaver/aspectjweaver-[aspectJWeaverV].jar
在您的项目根目录中。

我实际上通过使用插件向运行时添加代理解决了这个问题

我实际上通过使用插件向运行时添加代理解决了这个问题

我实际上通过使用插件向运行时添加代理解决了这个问题运行时