2017-04-11 96 views
13

我想通过将两步合一来优化sbt程序集/程序包操作。 两个步骤是:如何以交互模式运行sbt multiple命令作为一个命令?

$ sbt 
> project XXX 
.... 
> assembly 
Ctrl + c to exit 

此外,assembly是一个任务形式脂肪罐子SBT插件。
我尝试用sbt project analysis assembly但不works.A错误的邂逅:

[error] Not a valid command: analysis (similar: alias) 
[error] Not a valid key: analysis (similar: readAnalysis, mainClass, less) 
[error] analysis 
[error]  ^

如何实现这个感谢

+1

'analysis'不是SBT命令(除非你定义或导入)。你希望它成为'project'命令的参数,对吧? Sbt无法阅读你的想法,所以你需要帮助它:'sbt“项目分析”程序集“。希望它有效,另见http://www.scala-sbt.org/0.13/docs/Howto-Running-Commands.html#Pass+arguments+to+a+command+or+task+in+batch+mode –

+0

谢谢,'sbt“项目分析”程序集“工作。'分析'关键字是我的项目名称我只是不知道如何切换项目与一行cmd。你能回答吗? – LoranceChen

+0

重复的问题没有回答标题中的实际问题:以交互模式运行多个命令。下面的答案是[@Justin Kaeser](https://stackoverflow.com/a/43342323/1206998)。 –

回答

21

内SBT外壳,使用;到链命令:

;project XXX; assembly 

从命令行调用时,用引号括起单个命令:

sbt "project XXX" assembly 

或用引号括整个链条:

sbt ";project XXX; assembly" 

从另一个项目在外壳的情况下执行任务的子项目XXX

XXX/assembly 
+0

我已经问过关于在sbt shell中运行几个命令的更多精度问题。我复制了你的答案,但你得到信用是公平的。如果你添加上面的答案,或者只是复制我的改编版本,我将删除我的 –

+1

谢谢,我在那里添加了一个答案;) –