【问题标题】:Conditional JavaAgent Command for SBT Native PackagerSBT Native Packager 的条件 JavaAgent 命令
【发布时间】:2021-04-13 14:57:52
【问题描述】:

我正在使用 scala、sbt、sbt-native-package 和可能的 sbt-java-agent 在运行时使用 kubernetes 有条件地激活 datadog java 代理。

通过将dd-java-agent 添加为依赖项并添加脚本sn-p,我只能在特定环境时激活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""""

有没有办法让 sbt 管理 dd-java-agent.jar 的下载,将这个 jar 包含在 lib 目录中(如果需要的话,可以使用其他目录),但从类路径中排除?

我尝试使用 sbt-java-agent 将 jar 放入 dd-java-agent 目录并从类路径中排除 jar,但我无法弄清楚如何将 addJava 语句包装在 if 中检查何时使用那个插件。

感谢您提供的任何帮助!

【问题讨论】:

    标签: scala sbt javaagents datadog sbt-native-packager


    【解决方案1】:

    我最终选择了 sbt-javaagent 插件以避免额外的代码将代理 jar 从插件自动处理的类路径中排除。

    技巧/hack 是过滤掉默认的addJava -javaagent line the sbt-javaagent plugin adds automatically,然后附加一个新的脚本片段以仅在某个环境时启用 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,
      )
    

    【讨论】:

    • 感谢分享这个
    • 但最后你是如何传递代理参数的? .settings( javaAgents += JavaAgent("com.datadoghq" % dataDogAgentName % dataDogAgentVersion, arguments = "my agent arguments") ) -> 似乎在末端被覆盖,将它们直接放入自定义脚本中也不起作用。
    • 嗨@Xorr,在我的场景中,我不需要传递任何自定义参数,但我认为您可以通过在自定义脚本 javaagent 字符串的末尾添加一个冒号来附加它们。 addJava "-javaagent:$${app_home}/../$dataDogAgentName/$dataDogAgentName-$dataDogAgentVersion.jar:custom-args";
    猜你喜欢
    • 2016-09-28
    • 2016-07-27
    • 2018-10-01
    • 2016-09-09
    • 2015-10-03
    • 2015-10-11
    • 2016-12-14
    • 2015-03-31
    • 2016-05-27
    相关资源
    最近更新 更多