I miei progetti usano ancora sbt 0.7.7 e trovo molto comodo avere classi di utilità che posso eseguire dal prompt sbt. Posso anche combinare questo con proprietà che vengono mantenute separatamente, in genere per valori relativi all'ambiente che cambiano da host a host. Questo è un esempio della mia definizione del progetto sotto la directory project/build
:sbt 0.11 eseguire gli esempi di attività necessari
class MyProject(info: ProjectInfo) extends DefaultProject(info) {
//...
lazy val extraProps = new BasicEnvironment {
// use the project's Logger for any properties-related logging
def log = MyProject.this.log
def envBackingPath = path("paths.properties")
// define some properties that will go in paths.properties
lazy val inputFile = property[String]
}
lazy val myTask = task { args =>
runTask(Some("foo.bar.MyTask"),
runClasspath, extraProps.inputFile.value :: args.toList).dependsOn(compile)
describedAs "my-task [options]"
}
}
posso utilizzare il mio compito come my-task option1 option2
sotto il guscio sbt.
Ho letto il nuovo sbt 0,11 documentazione presso https://github.com/harrah/xsbt/wiki comprese le sezioni su Tasks e TaskInputs e francamente sto ancora lottando su come realizzare quello che ho fatto su 0.7.7.
Sembra che le proprietà aggiuntive potrebbero semplicemente essere sostituite da un numero environment.sbt
separato, che le attività devono essere definite in project/build.scala
prima di essere impostate in build.sbt
. Sembra anche che ci sia il supporto al completamento, che sembra molto interessante.
Oltre questo sono un po 'sopraffatto. Come realizzo ciò che ho fatto con il nuovo sbt?
mi piacerebbe aiutare, ma non ricordo i dettagli relativi sbt 0.7.7. Mi chiedo se questa domanda possa essere suddivisa in più domande autonome su sbt 0.11? –
@KiptonBarros, certo - iniziamo con il 'runTask' di base a cui posso fornire argomenti sulla shell sbt. – huynhjl
Sembra che la documentazione di sbt sia attualmente in fase di revisione. Penso che la sezione "Definizione attività di input di base" nella pagina wiki [Input Tasks] (https://github.com/harrah/xsbt/wiki/Input-Tasks) sia ciò che stai cercando. –