<<=
es un método en TaskKey que devuelve un valor. No actualiza el estado mutable en ninguna parte, por lo que en el código de ejemplo, el resultado de la primera llamada se descarta. Para arreglar esto, declara packageBin como una entrada también, pero ignora el valor resultante. Tenga en cuenta que packageBin depende de la compilación, por lo que depender de la compilación no es necesario.
dist <<= (update, crossTarget, packageBin in Compile) map { (updateReport, out, _) =>
Es poco probable que desea copiar todos los archivos en un UpdateReport
a un directorio basado únicamente en el nombre del archivo. Es posible que diferentes dependencias tengan el mismo nombre de archivo. Además, esto incluirá dependencias de todas las configuraciones, incluidas las dependencias de prueba.
Para el primer problema, utilice el ModuleID
asociado para construir la ruta en el directorio de destino, como se hace en el directorio lib_managed
cuando retrieveManaged := true
. Para el segundo problema, solo seleccione los archivos para la configuración que desee.
updateReport.matching(configurationFilter(Runtime.name)).foreach...
Ver las sbt.UpdateReport y sbt.RichUpdateReport docs API para otros métodos útiles.
Si no está preocupado por las colisiones de nombre de archivo, puede obtener los archivos de dependencia de dependencyClasspath. Por ejemplo:
dist <<= (crossTarget, packageBin in Compile, dependencyClasspath in Runtime) map { (out, _, cp) =>
y obtener el Seq[File]
de cp.files
.
En lo que respecta a una solución que pude utilizar ~; compilar; paquete; tarea de dist – arturaz