ade*_*rtc 0 ant scala target sbt
什么是Ant目标的SBT等价物(如果有的话)?例如,Ant的build.xml文件中的代码段将是:
<target name="runClient" description="run client">
<java classname="client.Client" fork="true">
<jvmarg value="-Djava.rmi.server.codebase=${client_web_codebase}"/>
<jvmarg value="-Djava.security.policy=policy"/>
<arg value="localhost"/>
<classpath>
<pathelement location="dist/client.jar"/>
</classpath>
</java>
</target>
Run Code Online (Sandbox Code Playgroud)
然后我会做类似的事情ant runClient,用XML中指定的jvmargs启动应用程序"client.Client".是否有SBT等效,或SBT挂钩到Ant的方式来做到这一点?
您可以使用Sbt Tasks来执行此操作.您定义的任务可能取决于其他任务和/或设置(例如,您的项目基目录):
import sbt._
import Keys._
object TestBuild extends Build {
lazy val runClient = TaskKey[Unit]("runClient", "run client")
lazy val root = Project("Test", file("."),
settings = Defaults.defaultSettings ++ Seq(
runClient <<= baseDirectory map {
base =>
val clientWebCodebase = base / "yourpath"
val opts = Seq("-Djava.rmi.server.codebase=" + clientWebCodebase,
"-Djava.security.policy=policy",
"-cp", "dist/client.jar",
"client.Client", "localhost"
)
Fork.java.fork(None, opts, None, Map(), false, StdoutOutput)
}
)
)
}
Run Code Online (Sandbox Code Playgroud)
有了这样的任务定义,你可以运行它:
sbt runClient
Run Code Online (Sandbox Code Playgroud)
或者在sbt shell中:
>runClient
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用Tab完成:runC + tab :)
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |