【问题标题】:In SBT, how do you override compile to run arbitrary code afterwards?在 SBT 中,你如何重写 compile 以在之后运行任意代码?
【发布时间】:2017-01-27 10:59:23
【问题描述】:

我正在尝试使用 SBT 来构建一个依赖于字节码增强的项目。基本上,我需要在compile 之后使用当前范围内的类路径运行一些代码(以便命令可以找到要修改的类),然后确保compile 之后不再运行以撤消增强。

我正在使用 SBT 0.13.12,如果这很重要的话。

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    我相信你会想要创建一个新的 sbt 任务并让它依赖于编译。然后使用它而不是编译。

        lazy val bytecodeEnhancedCompile = taskKey[Unit]("bytecode Enhance")
    
        bytecodeEnhancedCompile <<= bytecodeEnhancedCompile dependsOn (compile in Compile)
    
        bytecodeEnhancedCompile  := {
           ....
        }
    

    【讨论】:

    • 尝试此操作时,:= 运算符出现错误。它说value := is not a member of sbt.Def.Initialize[sbt.Task[Unit]]
    • 我也怕运行testconsole会重新运行compile,取消字节码增强。
    • @TOB 固定语法。也许您可以更改测试和控制台以依赖于您的新任务而不是编译?
    猜你喜欢
    • 2015-12-31
    • 2020-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2019-04-17
    • 2015-01-18
    相关资源
    最近更新 更多