Tom*_*ski 0 scala javaagents sbt sbt-native-packager datadog
我正在使用 scala、sbt、sbt-native-package 以及可能的 sbt-java-agent 在运行时使用 kubernetes 有条件地激活 datadog java 代理。
通过添加dd-java-agent作为依赖项并添加脚本片段,我可以仅在特定环境下激活 datadog。变量已设置,但这也将 dd-java-agent 添加到类路径中,这是我试图避免的:
val DataDogAgentVersion = "0.70.0"
libraryDependencies += "com.datadoghq" % "dd-java-agent" % DataDogAgentVersion % "runtime"
bashScriptExtraDefines += """if [ "$DD_PROFILING_ENABLED" = "true" ]; then addJava "-javaagent:${app_home}/../lib/dd-java-agent-""" + DataDogAgentVersion + """.jar"; fi""""
Run Code Online (Sandbox Code Playgroud)
有没有办法让 sbt 管理 dd-java-agent.jar 的下载,将此 jar 包含在目录中lib(或不同的目录,如果需要的话),但从类路径中排除?
我尝试过使用sbt-java-agent它将 jar 放入dd-java-agent目录中并将 jar 从类路径中排除,但我无法弄清楚在使用该插件时如何将addJava语句包装在if检查中。
感谢您的任何帮助,您可以提供!
我最终使用了该sbt-javaagent插件,以避免额外的代码将代理 jar 从类路径中排除,该插件会自动处理该类路径。
技巧/黑客是过滤掉插件自动添加的默认addJava -javaagent行sbt-javaagent,然后附加一个新的脚本片段以仅在特定环境下启用 javaagent。变量已设置。
lazy val dataDogAgentName = "dd-java-agent"
lazy val dataDogAgentVersion = "0.70.0"
lazy val distProject = project
.enablePlugins(JavaAgent, JavaAppPackaging)
.settings(
javaAgents += "com.datadoghq" % dataDogAgentName % dataDogAgentVersion,
bashScriptExtraDefines := bashScriptExtraDefines.value.filterNot(_.contains("javaagent")) :+ s"""
|if [[ "$$DD_PROFILING_ENABLED" = "true" ]]; then
| addJava "-javaagent:$${app_home}/../$dataDogAgentName/$dataDogAgentName-$dataDogAgentVersion.jar";
|fi
|""".stripMargin,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |