<<=
est une méthode sur TaskKey qui renvoie une valeur. Il ne met pas à jour l'état mutable n'importe où, donc dans le code d'exemple, le résultat du premier appel est rejeté. Pour résoudre ce problème, déclarez aussi packageBin comme une entrée, mais ignorez la valeur résultante. Notez que packageBin dépend de la compilation, donc en fonction de la compilation est inutile.
dist <<= (update, crossTarget, packageBin in Compile) map { (updateReport, out, _) =>
Il est peu probable que vous souhaitez copier tous les fichiers dans un UpdateReport
dans un répertoire basé uniquement sur le nom du fichier. Il est possible que différentes dépendances aient le même nom de fichier. En outre, cela inclura les dépendances de toutes les configurations, y compris les dépendances de test.
Pour le premier problème, utilisez le ModuleID
associé pour construire le chemin dans le répertoire cible, comme dans le répertoire lib_managed
lorsque retrieveManaged := true
. Pour le second problème, sélectionnez uniquement les fichiers pour la configuration souhaitée.
updateReport.matching(configurationFilter(Runtime.name)).foreach...
Voir les pour d'autres méthodes utiles docs API sbt.UpdateReport et sbt.RichUpdateReport.
Si vous n'êtes pas concerné par les collisions de noms de fichiers, vous pouvez obtenir les fichiers de dépendance à partir de dependencyClasspath. Par exemple:
dist <<= (crossTarget, packageBin in Compile, dependencyClasspath in Runtime) map { (out, _, cp) =>
et obtenir le Seq[File]
de cp.files
.
Dans la mesure où une solution de contournement j'ai pu utiliser ~; compile; package; dist tâche – arturaz