我正在将一个遗留jar项目转换为SBT,并且由于奇怪的原因而不易解决,这个项目里面有" javax/servlet/Servlet.class ".所以我需要以某种方式从package-bin生成的jar文件中排除这个类.我该如何做到这一点?我希望排除使用通配符(即javax.*).
该SBT组件插件看起来像它的功能,将做到这一点,但我担心的是依靠SBT装配意味着我的JAR项目将无法在船型多模块项目(即工作,如果我把它作为一个战争文件的依赖然后需要告诉war项目在依赖的jar项目而不是package-bin上运行程序集 - 但我可能在这里弄错了).
我们需要在编译步骤之后运行一些代码。在编译步骤之后让事情发生似乎很容易:
compile in Compile <<= (compile in Compile) map{x=>
// post-compile work
doFoo()
x
}
Run Code Online (Sandbox Code Playgroud)
但是你如何在新编译的代码中运行一些东西呢?
关于场景的更多信息:我们在提升项目中使用较少的 css。我们希望提升在运行中(如果需要)将较少的编译成 css 以帮助开发人员,但在构建期间、测试等运行之前使用相同的代码生成较少的代码。less-sbt 可能会有所帮助,但我们对如何解决这个问题很感兴趣。
我知道,我看到在标准任务之前/之后自动运行自定义任务,但它似乎已经过时了。我还发现了一个任务的前/后挂钩的 SBT,但它没有任何代码示例。
我在SBT 0.13.17。
所以我想运行我的任务MyBeforeTask和MyAfterTask以后的其他任务自动说Compile。
因此,当您这样做时,sbt compile我希望看到:
...log...
This is my before test text
...compile log...
This is my after test text
Run Code Online (Sandbox Code Playgroud)
所以我需要:
object MyPlugin extends AutoPlugin {
object autoImport {
val MyBeforeTask = taskKey[Unit]("desc...")
val MyAfterTask = taskKey[Unit]("desc...")
}
import autoImport._
override def projectSettings: Seq[Def.Setting[_]] = {
MyBeforeTask := {
println("This is my before test text")
},
MyAfterTask := {
println("This is my after test …Run Code Online (Sandbox Code Playgroud)