Pregunta

Quiero crear una acción para automatizar la recopilación CGPJ. Desde no pude hacer que funcione con Ant , decidí probar SBT . Los documentos dicen cómo crear una acción y de cómo ejecutar un proceso externo. Lo que sin embargo no veo es cómo reutilizar el recorrido del árbol de directorios que existe para Java y el compilador de Scala acciones. En este caso mis archivos de entrada serían todos los archivos .class en virtud de una carpeta raíz determinado. También tendría que especificar una ruta de clase específico para GCJ. Cualquier punteros de este sería apreciado también.

¿Fue útil?

Solución

No he utilizado GCJ mucho a todos y todavía estoy bastante nuevo en el SBT, pero esta es la forma en que creo que podría escribir una tarea rápida para hacer exactamente lo que está buscando con SBT 0.7.1. Puede utilizar un PathFinder para agarrar todos los archivos de clases de esta manera:

val allClasses = (outputPath ##) ** "*.class"

El uso que Pathfinder y el "compileClasspath" método de nivel superior, se puede construir una tarea como esta que se desarrollará gcj utilizando la ruta de clase del proyecto actual y componer todos los archivos .class en uno gcjFile:

val gcj = "/usr/local/bin/gcj"
val gcjFile = "target/my_executable.o"

val allClasses = (outputPath ##) ** "*.class"

lazy val gcjCompile = execTask {
  <x>{gcj} --classpath={compileClasspath.get.map(_.absolutePath).mkString(":")}  -c {allClasses.get.map(_.absolutePath).mkString("-c ")} -o {gcjFile}</x>
} dependsOn(compile) describedAs("Create a GCJ executable object")
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top