Mis proyectos todavía están utilizando sbt 0.7.7 y me parece muy conveniente tener clases de utilidad que pueda ejecutar desde el indicador sbt. También puedo combinar esto con propiedades que se mantienen por separado, generalmente para valores relacionados con el entorno que cambian de hosts a hosts. Este es un ejemplo de mi definición del proyecto en el directorio project/build
:sbt 0.11 ejecutar ejemplos de tareas necesarios
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]"
}
}
entonces puedo usar mi tarea como my-task option1 option2
debajo de la cáscara SBT.
He leído la nueva documentación SBT 0,11 a https://github.com/harrah/xsbt/wiki incluyendo las secciones sobre Tasks y TaskInputs y francamente Todavía estoy luchando sobre cómo lograr lo que hice en 0.7.7.
Parece que las propiedades adicionales podrían simplemente reemplazarse por un environment.sbt
por separado, que las tareas deben definirse en project/build.scala
antes de establecerse en build.sbt
. También parece que hay soporte de finalización, que se ve muy interesante.
Más allá de eso estoy algo abrumado. ¿Cómo logro lo que hice con el nuevo sbt?
Me gustaría ayudar, pero no recuerdo los detalles sobre SBT 0.7.7. Me pregunto si esta pregunta podría dividirse en múltiples preguntas autocontenidas sobre sbt 0.11. –
@KiptonBarros, claro, comencemos con 'runTask' básico al que puedo proporcionar argumentos en el shell sbt. – huynhjl
Parece que la documentación de sbt está siendo revisada actualmente. Creo que la sección "Definición de tarea de entrada básica" en la página wiki [Tareas de entrada] (https://github.com/harrah/xsbt/wiki/Input-Tasks) es lo que estás buscando. –