Ich habe in ein paar verwandte Fälle mit SBT, die mich ratlos sind gerannt. Gibt es eine Möglichkeit, SBT mitzuteilen, ein Teilprojekt für bestimmte Scala-Versionen komplett zu überspringen, wenn Sie Cross-Compiling durchführen?Wie kann SBT die Kreuzkompilierung für ein bestimmtes Unterprojekt überspringen?
Hier sind zwei Beispiele, wo dies nützlich wäre.
1) Ein Build mit drei Projekten A, B und C. Sowohl A als auch B sind Scala-Projekte und haben 'scalaVersions ++ = Seq ("2.11.2", "2.10.4") in ihren Einstellungen . Projekt C ist ein reines Java-Artefakt, und daher habe ich die Scala-Bibliotheken von ihren Abhängigkeiten ausgeschlossen. Ich möchte, dass A und B von C abhängen, aber im Idealfall möchte ich C nur einmal bauen. Wenn ich das Standardverhalten verwende und "+ publish" aus dem Root-Aggregator-Projekt mache, erhalte ich zwei Kopien von C-1.0.0.jar, und SBT versucht, sie zweimal zu veröffentlichen, was natürlich ein No-No für ein ist Maven Repository.
2) Ein Build mit mehreren Scala-Projekten, aber ein Projekt sollte nur mit einer einzigen Scala-Version erstellt werden. Ich habe versucht, 'scalaVersions' in den Einstellungen für dieses Projekt zu definieren, um nur eine Version zu speichern, wo die anderen Projekte zwei haben, aber wieder "+ publish" von einem Root-Aggregator ignoriert dies und kompiliert es immer noch zweimal, zum zweiten Mal fehlgeschlagen, da Abhängigkeiten für diese Scala-Version nicht verfügbar sind. Dieses Projekt ist ein Blattknoten in der Abhängigkeitsgrafik, also ist es eine absolut feine Sache, die man logisch tun möchte.
Für Fall # 2 habe ich überlegt, die Source-Verzeichnisse für die 'schlechte' Scala-Version auf/dev/null oder etwas Ähnliches einzustellen, aber das führt immer noch den Build und erzeugt ein leeres Artefakt. Ich weiß, dass ich wahrscheinlich in gehen könnte und alle relevanten Schlüssel finden und etwas tun, wie
publishArtifact := if(scalaBinaryVersion.value == "2.10") false else publishArtifact.value
und dann alle anderen zugehörigen Einstellungen/Aufgaben jagen (kompilieren, kompilieren in Test, Test in Test, packageBin, usw.), aber das scheint ziemlich hack-ish. Gibt es irgendwo eine Einstellung zum "Überspringen"?
Das sieht sehr nützlich, aber ich bin offen leery „so viel Test“ des Hinzufügens und so zu meinem Build: -/ –
Und ich völlig verfehlt die „sensible“ Alternative in 0.1.4. Ich entschuldige mich, Sir! Das funktioniert wie ein Zauber! –
@Tomer Welche Tests und "sinnvolle Alternative" meinen Sie? – matanster