SBT Multi-Project Build sin usar vals perezosos -- scala campo con sbt camp Relacionados El problema

SBT multi-project build without using lazy vals


8
vote

problema

Español

Estoy trabajando con un gran proyecto con muchos subproyectos, algunos de ellos con subproyectos propios. Además de eso, me gustaría que algunos de ellos seran dinámicos, dado un List en algún lugar de la construcción del proyecto, me gustaría crear un proyecto para cada uno de los elementos.

Por esas razones, tener que definir un lazy val para cada proyecto en build.sbt es muy engorroso. ¿Hay alguna otra forma de declarar proyectos, como un método addProject6 , podemos llamar a cualquier lugar? ¿Hay algún complemento SBT que ayuda con eso?

Original en ingles

I'm working with a huge project with lots of subprojects, some of them with subprojects of their own. On top of that, I'd like some of them to be dynamic - given a List somewhere in the project build, I'd like to create one project for each of the elements.

For those reasons, having to define a lazy val for each project in build.sbt is very cumbersome. Is there other way to declare projects, like a addProject-like method we could call anywhere? Is there some SBT plugin that helps with that?

     

Lista de respuestas

1
 
vote

SBT utiliza macros para encender el nivel superior val S en los proyectos, así que no creo que puedas escapar de esa parte. Sin embargo, puede definir todo lo que construye en Project => Project Funciones: (Tenga en cuenta que también se compone la composición "gratis" con la composición de la función)

  def myConf: Project => Project =   _.enablePlugins(ScalaJSPlugin)    .settings(scalaVersion := "2.12.0")   

Luego, simplemente use project.configure(myConf) para definiciones de proyecto de una sola línea:

  Content-Encoding0  
 

Sbt uses macros to turns top level vals into projects, so I don't think you will be able to escape that part. However, you can define all you build in Project => Project functions: (note that you also composability "for free" with function composition)

def myConf: Project => Project =   _.enablePlugins(ScalaJSPlugin)    .settings(scalaVersion := "2.12.0") 

Then simply use project.configure(myConf) for single line project definitions:

lazy val subProject1 = project.configure(myConf) lazy val subProject2 = project.configure(myConf) lazy val subProject3 = project.configure(myConf) lazy val subProject4 = project.configure(myConf) ... 
 
 

Relacionados problema

5  Cómo ejecutar la tarea antes de todas las pruebas de todos los módulos en SBT  ( How to run task before all tests from all modules in sbt ) 
¡Tengo un juego de múltiples módulos! Solicitud Construida con SBT y tengo un problema en el servidor CI con pruebas paralelas y evoluciones: cuando SBT inici...

26  Ejecución paralela de pruebas  ( Parallel execution of tests ) 
Me he dado cuenta de que SBT está ejecutando mis pruebas SPECS2 en paralelo. Esto parece bueno, excepto que una de mis pruebas implica leer y escribir de un a...

4  Cómo se inicia una aplicación SPARK usando SBT RUN  ( How a spark application starts using sbt run ) 
En realidad, quiero saber el mecanismo subyacente de cómo ocurre esto cuando ejecuto sbt run ¡Se inicia la aplicación SPLP! Cuál es la diferencia entre es...

2  Cambiar Classpath en SBT durante la prueba  ( Change classpath in sbt during test ) 
¿Cómo agrego el resourceDirectory en Java classpath mientras SBT ejecuta las pruebas? Por ahora solo tengo sBT JAR. Mi necesidad se debe a una depende...

7  Cómo agregar SBTEClipse Plugin a SBT 0.10.x  ( How to add sbteclipse plugin to sbt 0 10 x ) 
Quiero ver el código fuente de Akka, y parece que está utilizando la versión 0.7.x de SBT. TRANRE LA CONFIGURACIÓN DEL PROYECTO A LA VERSIÓN 0.10.X. Cuando a...

2  Especificando la ubicación de AndroidManifest.xml en un proyecto Java compilado con SBT Android-Plugin  ( Specifying the location of androidmanifest xml in a java project compiled with s ) 
Estoy tratando de usar SBT para compilar un proyecto Android hecho en Java, que acabo de heredaré y quiero mejorar con Scala. El proyecto se divide en vario...

18  ¿Cómo alias una secuencia de tareas?  ( How to alias a sequence of tasks ) 
Tengo tareas personalizadas en mi proyecto SBT (0.12.2). Llamemos a los a , b y c . Entonces, cuando estoy en el modo interactivo de SBT, puedo simplement...

10  Clase de Kafkautils no encontrada en Spark Streaming  ( Kafkautils class not found in spark streaming ) 
Acabo de empezar con Spark Streaming y estoy tratando de construir una aplicación de muestra que cuenta las palabras de una corriente de Kafka. Aunque se comp...

3  Publicando un proyecto SBT SCALA para artifactory con los VARS envas  ( Publishing an sbt scala project to artifactory with the env vars ) 
lo que tengo es esto. He definido en SBT mi tarea publicada que publica al artifactory. Lo estoy ejecutando en un trabajo de Jenkins como un paso de constru...

2  Tipo de coincidencia con enlace. Scala relacionada con Scala.xml.Elem  ( Type mismatch with binding scala involving scala xml elem ) 
No estoy compilando un ejemplo simple de vinculación.scala , y siendo un novato, no tengo intuición de cómo solucionarlo. Tal vez el Readme está ligeramente ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos